질문 님이 쓰신 글 :
: 비트 마스크 공식 중에
: 특정 비트를 1로 지정하는 공식인 a|(a<<(n-1))에서 n-1은 왜 해주는건가요??
a|(a<<(n-1))가 아니라 a|(1<<(n-1))
변수 a의 n 번째 비트만 1로 설정하고 나머지 비트는 원래대로 두려면 a | (2(n-1))을 해야 하는데요.
여기서 2(n-1)에 해당하는 C 코드가 1<<(n-1) 이에요.
2진수에서 자릿값은 첫번째 비트가 20, 두번째 비트가 21 ... n번째 비트는 2(n-1)이지요.
값 1, 즉 20은 첫번째 비트만 1이고 나머지는 모두 0이구요.
이 1을 왼쪽으로 n-1 시프트시키면 2(n-1)이 되죠. |