黄舟2017-04-17 15:23:37
if (a[i]&(1<<j))
이 문장은 a[i]
의 j
비트가 1인지 확인하라는 의미입니다. 1 << x
은 1 << 3 == 0b1000
처럼 1을 x비트만큼 왼쪽으로 이동하는 것입니다.
a[i] = 111
이 32비트라고 가정하면 a[i]
의 바이너리는 0b0000_0000_0000_0000_0000_0000_0110_1111
이고, 1 << 6
은 0b1000000
이고, a[i] & 1 << 6 == 0b0000_0000_0000_0000_0000_0000_0100_0000
이면 a[i]
의 6번째 비트(첫 번째 비트) 0번째 비트)가 1이면 a[i] & 1 << 6
의 결과는 0이 아닙니다(위 예). a[i]
의 6번째 비트는 0이고 a[i] & 1 << 6
의 결과는 0입니다.
黄舟2017-04-17 15:23:37
은 정수변수 a[i]의 j번째 비트의 값을 구하는데 사용된다. a[i]&(1<
阿神2017-04-17 15:23:37
루프에서 msb부터 lsb까지 각 비트를 테스트합니다. (1<<j)
비트마스크를 빌드합니다. a[i]&(1<<j)
해당 비트가 1
으로 설정되어 있는지 테스트합니다.