[이론] 쉽게 정리한 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: 수고하셨습니다. :+1:

Reference

Leave a comment