AND 및 OR 연산 만 사용할 수있는 경우 어떻게 XOR 비트 연산을 수행합니까?XOR 만 OR 및 AND
답변
내 자신의 스크립트 언어를 만들기 - ChrisScript가 - 당신은 단지 같은 것을 필요조차하지 않고
#!/bin/chrish
bit XOR (bit A, bit B)
{
bit notA;
bit notB;
IF (A == 0) notA = 1 ELSE notA = 0;
IF (B == 0) notB = 1 ELSE notB = 0;
F = ((A && notB) || (notA && B));
RETURN F;
}
를,이 같은 에뮬레이트 할 수 있습니다. 그러나 이것은 인버터의 어떤 형태가 없어도 얻을 수있는 최상의 솔루션입니다. 나는 당신이 어떤 형태의 인버터를 가지고 있지 않다는 것을 믿기 어렵다. 어떤 스크립팅 환경을 사용하고 있는가? 당신이 arithemtic 같은 +
및 -
뿐만 아니라 비트 단위와 (&
) 등의 연산자와 OR (|
)가있는 경우
아주 제한된 Javascript 환경. –
또한 비트 단위가 아닌 int로 int를 수행해야합니다. 비트 단위로 연산자가 이동하지 않아서 개별 비트를 얻을 수 없기 때문입니다. –
"매우 제한됨"을 정의하십시오 - 사용중인 실제 자바 스크립트 엔진이 있습니까 (예 : Microsoft JScript)? 이 부분은 독점적 인 부분입니까, 그렇다면 제품 및 버전은 무엇입니까? 가능한 한 귀하의 환경에 관한 많은 정보를 얻는 것이 좋을 것입니다. –
그물에 참고 매뉴얼과 백과 사전 사이트에서 XOR을 조사한 다음 XOR 기본 제공 함수의 기능과 동일한 코드 또는 스크립트를 작성하고 사용자 자신의 반환 값 또는 상태 값을 사용하는 것이 좋습니다. . 소프트웨어 커뮤니티 내에서 그러한 유형의 비트를 비교하는 방법을 알려주지는 못합니다.
진리표 및
A B AND T T T T F F F T F F F FXOR 에 대한
진실에 대한 테이블 또는
A B OR T T T T F T F T T F F F
진실 테이블
A B XOR T T F T F T F T T F F F
따라서 XOR은 A와 B가 참일 경우 거짓임을 제외하고는 OR과 같습니다. 이 NOT없이 할 수 있으면
그래서, (A는 B OR) (NOT (A와 B)), 이는 (A 또는 B)와 (A 낸드 B)
A B OR AND NAND [(A OR B) AND (A NAND B)] T T T T F F T F T F T T F T T F T T F F F F T F
확실하지되며, 또는 NAND
나는 우리 모두가 그 작업들이 어떻게 진리표가 어떻게 생겼는지 안다고 생각한다. 문제는 첫 번째 두 개를 결합하여 세 번째를 형성 할 수 있는가, 그렇다면 어떻게? – delnan
숙제 일 때 제 대답을 시작했습니다. 대답이 아니라 방향이되기. 나는 그것이 끝날 수 있다고 생각하지 않는다. –
Wikipedia's entry on XOR이 자세히 설명합니다. 아마도 SO 질문을하기 전에 확인하는 첫 번째 좋은 장소 일 것입니다.
마스크가 해제 된 것에 대해 신경 쓰지 않는다면 코드를 작성하는 가장 쉬운 방법은 평등하지 않은 연산자를 사용하는 것입니다.
는이 같은 비트 XOR을 수행 할 수 있습니다
int bitwise_XOR(int a, int b)
{
return (a + b) - (a & b) - (a & b);
}
이 작동하는 이유이다 우리 주어진 비트 위치의 합이 < = 1 일 때 XOR과 동등한 전체 덧셈을 수행 한 다음 2 * (a & b)
을 뺀 자리 올림 (1 + 1)이 발생하는 경우를 수정합니다.
중간 용어가 오버플로 되어도 "정상적으로 동작하는"정수 (2의 보수, 오버플로의 모듈로 2 줄 바꿈 등)가 있다고 가정 할 때도 작동합니다.C에서
".이 시스템 ({T, F}, 등) 및 ({T, F} 또는) monoids하다"x^y = (x & ~y) | (~x & y)
"시스템 ({T, F}, xor)은 monoids와 다른 가역성을 갖는 abelian 그룹입니다.
따라서 'and'및 'or'은 'xor'연산을 생성하지 못합니다.
출처 :
(a XOR b) = ((a OR b) - (a AND b))
https://en.wikipedia.org/wiki/Exclusive_or#Relation_to_modern_algebra, 또는 다른 말로하면, 노조 세트 뺀 교차 세트. (자바 스크립트)
코드 예제 :
var a = 5;
var b = 12;
var xor = (a | b) - (a & b); // result: 9
- 1. 유전 알고리즘에서 선택을위한 상위 x % 만 선택
- 2. MySQL - 과거 X 일간의 항목 만 반환
- 3. Subversion에있는 항목의 x 레코드 만 유지 하시겠습니까?
- 4. MYSQL COUNT 위의 결과 만 표시 X
- 5. PHP 5.2.x 및 5.3.x
- 6. Eclipse 및 emacs + : C-x 0 및 C-x 2가 작동하지 않음 - C-x 1 및 C-x 3 작동
- 7. 만
- 8. x * x 대 table_of_sqr [x] = 차이 없음?
- 9. xinetd에서 시작된 Xvnc4는 빈 회색 X 화면 만 표시합니다.
- 10. JBoss 5.x 및 Axis2
- 11. CardDAV 및 OS X Server
- 12. 레일 및 SSL_CERT_FILE OS X
- 13. x 및 y는 거꾸로 RGL와
- 14. LayoutParams가 x 및 y로 이동
- 15. x 및 y 벡터를 meshgrid로 변환합니다.
- 16. JavaScript 및 CSS 파일의 X-UA 호환
- 17. Wordpress : 루프에는 X 일 전의 게시물 만 포함됩니다.
- 18. XSLT, 첫 번째 X 항목 만 처리하는 방법?
- 19. ReportBuilder 7.X 및 Delphi 7.X 문제
- 20. «F (5)»및«int x; F (x)»다른 함수를 호출할까요?
- 21. JSTL c : import 및 x : forEach 내부의 x : 구문 분석
- 22. 차이점 if (x) {foo(); } 및 x? foo() : 0;
- 23. .x 파일 및 .xcodeproj 파일없이 정적 라이브러리 만 연결할 수 있습니까?
- 24. Parallel.ForEach x of x
- 25. 만
- 26. x : 00 x : 15 x : 30 및 x : 45에서 실행되는 스레드를 만드는 방법 2:00에서 다른 작업 수행
- 27. mysql/php에서 중국어 만, 일본어 만 및 한국어 만 레코드 선택
- 28. 플렉스 탭의 x 및 y 위치
- 29. Mac OS X 웹 공유 및 Django
- 30. 빔, +의 iconv nr2char 및 iconv + "\ X .."
는 숙제 질문처럼 소리. – Oded
나는 너도 잘 할 필요가 없다고 확신한다. – Jens
@Oded nope, 나는 단지 알고 싶다. 나는 AND와 OR만을 가지고 있지만 NOT이나 XOR이 아닌 스크립팅 환경에서 프로그래밍하고 있으며 XOR이 필요합니다. StackOverflow에있는 여러분은 숙제로 판단하는 것이 빠릅니다. 또한, 나는 그 링크를 이해하지 못한다. 나는 이미 질문을 올리기 전에 그것을 보았다. –