Just For Fun

mekiboss.egloos.com

포토로그



Bit 연산 정리 by 연쇄번개

&랑 |는 맨날 사용하고 논리적으로 간단하므로 패스.

<< 와 >> 연산자는 내가 잘 쓰지 않으므로 나중에 알아봅시다.

오늘은 맨날 헷갈리는 ^연산 과 ~연산 및 응용법을 정리해 봅니다.

이쁘게 꾸미는 것은 언제나처럼 추후에 할 일로 남겨 둡니다.


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

1 2 3 4 5 6 7 8 9 10 다음



통계 위젯 (화이트)

00
2
20041