1. 연산자 우선순위
비트연산의 우선순위는 ==, != 연산자보다 낮다.
따라서 비트연산에는 괄호를 꼭 해주는 습관을 해줘야한다.
a & 1 == b 이 연산은 1 == b를 먼저 수행하고 a & 1 을 수행한다.
2. 연산자 오버플로우
64비트 자료형을 사용할 경우 unsigned long long a;
a |= (1 << 60) 을 하게되면 원하는 값과 다른 결과가 나오게 된다.
1은 32비트 정수형이기때문에 60 만큼 쉬프트하게되면 0이된다.
따라서 1ull 로 정수임을 꼭 알리는 코딩을 하자.
3. 부호
부호가 있는 자료형을 선언할 경우 쉬프트로 부호비트를 킬 수 있다. 음수를 오른쪽으로 쉬프트할경우 1이 채워지는 버그가 생길 수 있다. 조심하자!
by JM북
'알고리즘' 카테고리의 다른 글
백준(BOJ) 2748 피보나치 수 2 (0) | 2018.11.29 |
---|---|
비트연산 공부하기 (0) | 2018.11.26 |
백준(BOJ) 1002 터렛 (0) | 2018.11.26 |
백준(BOJ) 2442 별찍기-5 (0) | 2018.11.26 |
백준(BOJ) 1026 보물 (0) | 2018.11.26 |