바위타는 두루미
5.5 디버거 본문
728x90
문제
다음 코드가 하는 일을 설명하여라
( n & (n-1)) ==0
접근법
이 문제는 거꾸로 접근해가면서 해결할 수 있다.
1. 우선 , A & B==0이 무엇을 의미하는가?
- A와 B에서 1비트의 위치가 같은 곳은 없다는 것을 의미한다.
2. n-1은 어떻게 생겼을까?
1011000 - 1 = 1010111 이 된다.
이말은 즉, 가장 오른쪽의 연속된 0들은 모두 1로 변하고 첫번째 1비트가 0으로 바뀐형태를 취한다.
즉 n = abced1000 이면 n-1은 abcde0111 이고
n & (n-1) ==0 가 되려면 abcde는 모두 0이 되어야 하므로
n은 2의 거듭제곱 꼴이여야 저 코드가 참일 것이다.
따라서 n이 2의 거듭제곱꼴인지 확인하는 코드이다.
'Study > Interview준비' 카테고리의 다른 글
5.7 쌍끼리 맞바꾸기 (0) | 2019.08.03 |
---|---|
5.6 변환 (0) | 2019.08.03 |
5.4 다음숫자 (0) | 2019.08.03 |
5.3 비트 뒤집기 (0) | 2019.08.02 |
5.2 2진수를 문자열로 (0) | 2019.08.02 |
Comments