&랑 |는 맨날 사용하고 논리적으로 간단하므로 패스.
<< 와 >> 연산자는 내가 잘 쓰지 않으므로 나중에 알아봅시다.
오늘은 맨날 헷갈리는 ^연산 과 ~연산 및 응용법을 정리해 봅니다.
이쁘게 꾸미는 것은 언제나처럼 추후에 할 일로 남겨 둡니다.
1. ^ 연산 (XOR)
두 항의 값이 같으면 0을 리턴, 두항의 값이 다르면 1을 리턴 합니다
0000 1101 ^ 0000 1011 = 0000 0110
2. ~ 연산
1의 보수를 취합니다. 기존값이 1이면 0으로, 0이면 1로 변환됩니다.
~(0000 1101) = 1111 0010
예제 1. 버튼이 눌릴때마다 특정 Bit flag를 toggle 하고 싶은 경우
현재 Bit Value - int target = 0x 0000 1237
Toggle 하고싶은 Bit value - int feature = 0x0000 0004
Psuedo code
if (button.clicked == true) {
target = target ^ feature;
}
Result : 0x 0000 1233 <-> 0x0000 1237
예제 2. YES가 선택된 경우는 Feature bit flag 을 추가하고, NO가 선택된 경우는 해당 Feature bit flag를 제거하고 싶은 경우
현재 Bit Value - int target = 0x 0000 1237
Toggle 하고싶은 Bit value - int feature = 0x0000 0004
Psuedo code
if (yes.clicked == true) {
target = target | feature;
} else if (no.clicked == true) {
target = target & ~(feature);
}
Result
YES인 경우, target = 0x 0000 1237
NO인 경우, target = 0x 0000 1233
최근 덧글