더북(TheBook)


7.42의 보수로 표현하는 이유


그러면 컴퓨터는 왜 음수를 2의 보수로 저장할까요?

첫째, 양수와 음수를 모두 양수처럼 저장한다고 가정해 보겠습니다. 0000 0000과 1000 0000은 +0과 -0이 됩니다. 즉, 0을 표현하는 두 가지 방법이 존재하게 됩니다. 이렇게 되면 컴퓨터 입장에서는 수 하나를 더 표현할 수 있는데 비트 하나를 낭비하는 셈입니다. 또한 두 수를 비교할 때 CPU에서 뺄셈을 하는데 +0과 -0을 비교하면 결과 값이 예상과 다르게 나옵니다.

둘째, 컴퓨터에서 정수의 뺄셈 과정을 살펴보겠습니다. 덧셈은 단순히 두 수를 더하면 되지만, 뺄셈은 2의 보수 개념을 활용합니다. 9–4를 계산할 때 9에서 4를 빼는 게 아니라 9와 -4를 더합니다. 그림 2-7을 볼까요?

032_1

그림 2-7 정수의 뺄셈 연산(9 - 4)


10진수 9를 2진수로 표현한 0000 1001에서 10진수 -4를 2의 보수로 표현한 1111 1100을 더합니다. 계산 결과를 보면 받아올림(carrying)이 발생하여 1 0000 0101이 나오는데 이때 받아올림 수(맨 앞 네모 안에 있는 1)는 버리면 됩니다. 최종 결과는 0000 0101로 5가 됩니다. 즉, 9–4가 잘 계산되었음을 알 수 있습니다. 이와 같은 컴퓨터의 연산 방식을 알면 음수를 왜 2의 보수로 저장하는지 어느 정도 이해할 수 있을 것입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.