컴퓨터 산술
C 언어에서 32비트 부호 없는 정수(unsigned int)의 0에서 1을 뺀 결과는 무엇입니까?
- A−1
- B4294967295
- C0 그대로 변하지 않는다
정답과 해설 보기
정답: B. 4294967295
부호 없는 정수에는 음수가 없으며, C 언어에서는 결과를 2³²으로 나눈 나머지로 취급(랩어라운드)하도록 정해져 있습니다. 0 − 1은 2³² − 1 = 4294967295가 되며 비트열은 모두 1입니다. 이 때문에 「i가 0이 될 때까지 1씩 줄이는」 루프를 부호 없는 변수로 i >= 0이라고 쓰면 조건이 항상 참이 되어 끝나지 않게 됩니다. 부호 없는 수로는 −1을 나타낼 수 없고, 0에서 멈추는(포화되는) 것도 아닙니다.