[이론] 쉽게 정리한 bit 연산
비트 연산을 사용하는 여러 방법을 소개합니다.
if (n & 1 « b)
연산자 우선순위는 «가 &보다 높습니다. 즉, n & (1 « b)로 동작합니다.
1비트를 왼쪽으로 b비트만큼 shift합니다.
1
2
3
4
cout << (1 << 0) << "\n"; // 1 : 0000'0000
cout << (1 << 1) << "\n"; // 2 : 0000'0010
cout << (1 << 2) << "\n"; // 4 : 0000'0100
cout << (1 << 3) << "\n"; // 8 : 0000'1000
그 다음 n을 binary로 표현한 것과 &연산을 수행합니다.
즉, n을 binary로 표현했을 때 b번째 자리 숫자가 1이면 true, 아니면 false입니다.
n |= 1 « b
n을 binary로 표현했을 때 b번째 자리의 비트를 1로 바꿉니다.
1
2
1 & 1 = 1
1 & 0 = 1
n &= ~(1 « b)
n을 binary로 표현했을 때 b번째 자리의 비트를 0로 바꿉니다.
1
2
1 & 0 = 0
0 & 0 = 0
n ^= 1 « b
n을 binary로 표현했을 때 b번째 자리의 비트를 반전합니다.
1
2
1 & 1 = 0
1 & 0 = 1
결론
Success Notice: 수고하셨습니다.
Leave a comment