설명
C++에는 비트 배타적 OR(비트 XOR로도 알려짐)라 불리는다소 일반적이지 않은 연산자가 있다. (영어에서 보통 "엑스-오어"로 발음.) 비트 XOR 연산자는 캐럿 기호 ^
를 쓴다.
비트 XOR 연산자는 입력 비트들이 서로 다르면 1이되고, 아니면 0이 된다.
정확히,
0 0 1 1 operand1 0 1 0 1 operand2 ---------- 0 1 1 0 (operand1 ^ operand2) - 반환 결과
C++에는 비트 배타적 OR(비트 XOR로도 알려짐)라 불리는다소 일반적이지 않은 연산자가 있다. (영어에서 보통 "엑스-오어"로 발음.) 비트 XOR 연산자는 캐럿 기호 ^
를 쓴다.
비트 XOR 연산자는 입력 비트들이 서로 다르면 1이되고, 아니면 0이 된다.
정확히,
0 0 1 1 operand1 0 1 0 1 operand2 ---------- 0 1 1 0 (operand1 ^ operand2) - 반환 결과
int x = 12; // 2진수: 1100
int y = 10; // 2진수: 1010
int z = x ^ y; // 2진수: 0110, 즉 10진수 6
^ 연산자는 정수식의 어떤 비트들을 토글(0을 1로, 1을 0으로 바꿈))에 주로 쓰인다.
비트 XOR 연산에서 마스크 비트에 1이 있으면 그 비트는 뒤집힌다. 0이 있으면 비트는 뒤집히지 않고 그대로 있다. 아래는 디지털 핀 5가 깜박이는 프로그램.
// Blink_Pin_5
// demo for Exclusive OR
void setup() {
DDRD = DDRD | B00100000; // 디지털 핀 5를 OUTPUT 으로
Serial.begin(9600);
}
void loop() {
PORTD = PORTD ^ B00100000; // 비트 5 (디지털 5) 뒤집기, 다른 것은 그대로
delay(100);
}
EXAMPLE BitMath Tutorial