프로그래밍의 기초(의사 코드 트레이스)
∧는 비트별 논리곱을 나타낸다. 다음 프로그램을 실행한 후의 c의 값은?
integer: x ← 200, c ← 0
while (x ≠ 0)
x ← x ∧ (x − 1)
c ← c + 1
endwhile
- A3
- B5
- C8
정답과 해설 보기
정답: A. 3
x ∧ (x − 1)이라는 비트 연산은 x의 가장 아래에 있는 1인 비트를 0으로 만듭니다. x − 1에서는 최하위의 1이 0이 되고 그보다 아래의 0이 모두 1이 되므로, 논리곱을 취하면 그 부분만 0이 되기 때문입니다. 200 = 11001000은 11000000 = 192, 10000000 = 128, 0으로 바뀌어 반복은 3회입니다. c는 x를 2진수로 나타냈을 때의 1의 개수가 됩니다.