본문 바로가기
IT 공부/컴퓨터 하드웨어 및 구조

2의 보수 계산법의 의미

by exdus3156 2023. 12. 26.

2의 보수를 구하는 법은 아래와 같다.

  1. 원래 양수의 비트를 반전시킨다 (NOT 연산)
  2. 1을 더한다

 

예를 들어, 1101(2)가 있으면 부호를 반전해 0010(2)를 얻는다. 여기에 1을 더한 0011(2)이 원래의 숫자 1101(13이다)의 보수다.

바로 이 보수(complement)를 음수로 간주하자는 것이 컴퓨터의 음수 표현법이다.

왜 보수를 음수로 취급할까?

+10과 -10은 더하면 0이 된다. +123과 -123은 더하면 0이 된다. 즉, 수학적으로 말하면 음수는 원래의 수에 더해져서 덧셈의 항등원(0)을 만들어내는 수로 정의된다.

0과 1을 반전시키면 비트가 다른 데이터를 얻는다. 이 둘을 더하면 모든 비트열에 대해 0과 1을 더하는 것이므로 11111....이 된다. 여기서 1을 더하면 올림이 발생한 1을 버린다는 가정 하에 결과는 00000000..... 이 되어 0이 된다.

즉, 보수(complement)는 덧셈이라는 연산의 맥락에서 추출한 것으로서, 뺄셈과 덧셈을 일관적으로 계산할 수 있게 해준다.

예를 들어 보수를 더하면 (보수의 정의에 따라) 반드시 0을 얻을 수 있으니 음수가 맞고, 보수를 뺀다면 빼기는 부호를 반전해 더하는 것과 같으므로 보수의 보수를 구할 것이다. 보수의 보수는 원래 숫자가 나온다. 따라서 빼기의 빼기는 덧셈이라는 것도 얻을 수 있다.

그러나 보수는 원래의 양수 값과 구분이 안 된다는 단점이 있다. 그래서 플래스(flag)를 통해 이 값이 음수인지 아닌지 판단해야 한다.