2의 보수 계산 방법 / 표현법 / 사용 이유

컴퓨터에서 음수를 표현하기 위해 2의 보수를 사용한다. 2의 보수 계산방법 / 표현법 / 사용 이유를 알아보자.

2의 보수 계산 방법

[X의 2의 보수] = [X 의 모든 비트 반전] + 1

     0000 0001(+1)
반전 1111 1110(-2)
+1   1111 1111(-1) <- 2의 보수

     1111 1100(-4)
반전 0000 0011(+3)
+1   0000 0100(+4) <- 2의 보수

위의 예제는 8비트 정수의 2의 보수를 구한 것이다. 2의 보수를 구하는 법은 모든 비트를 반전하고 1을 더하면 된다. 이렇게 되는 이유는 8비트 정수를 예로 들면 X + [X의 모든 비트 반전] = 1111 1111(-1)이므로 아래와 같기 때문이다.

X + [X의 모든 비트 반전] = -1
-X = [X의 모든 비트 반전] + 1

2의 보수 표현법

8bit 정수의 2의 보수 표현법
  • 2의 보수 : N비트 정수일 때, 2N = X + [X의 2의 보수 = 보충하는 수]
    • X에 보충하는 수를 더하면  2N 이 되기 때문에 보충하는 수를 2의 보수라고 한다.
    • 아래 8비트 정수 계산 예제를 보면, X와 X의 2의 보수를 더하면 0이기 때문에 X의 2의 보수는 부호가 바뀐다.
        0000 0002(+2)
      + 1111 1110(-2) <- +2의 2의 보수
      ---------------
      1 0000 0000(2= 0) <- 8bit 계산이기 때문에 9번째 bit인 1은 버려서 0이 됨
  • 최상위 비트가 0이면 양수이고 1이면 음수이다. 따라서 최상위 비트로 양수, 음수 판단을 할 수 있다. 
  • 양수에 음수를 더하는 방법으로 뺄셈이 가능하다.
    • 위 그림을 보면 -128 부터 +127까지 차례대로 1씩 증가한다. 따라서 어떤 수가 양수이든 음수이든, 그 수에 00000001(+1)을 더하면(한 칸 시계 방향으로 움직이면) 1을 더한 값이 된다. 마찬가지로 00000003(+3)을 더하면 3을 더한 값이 된다. 즉, 음수에 양수를 더하는 방식으로 뺄셈이 가능하다. CPU는 뺄셈기 없이 덧셈기 만으로 뺄셈을 할 수 있어, H/W 구현이 간단하다.
    • 1의 보수는 11111111과 00000000 둘 다 0이다. 즉, 2의 보수와 다르게 모든 수가 차례대로 1씩 증가하지 않고 11111111에서 00000000 사이에서는 수가 1 증가하지 않고 동일하다. 따라서 11111111(0)에 00000001(+1)을 더하면 00000000(0)이 되므로, 양수에 음수를 더하는 방식으로 뺄셈이 불가하다.


2의 보수 사용 이유

처음에 컴퓨터를 만들 당시에는 음수를 표현하기 위한 방법이 여러가지 제안되었다. 부호 절대값 방식, 1의 보수 방식이 있었는데, 2의 보수에 비해 H/W 구현이 복잡하다.

2의 보수는 뺄셈기가 필요 없고 양수와 음수를 더하기만 하면 추가 연산 없이 뺄셈이 되는 등 H/W 구현이 가장 간단해서, 현재는 모든 컴퓨터가 2의 보수를 사용한다.


* Feedback은 언제나 환영합니다.

Comments