'Logic'에 해당되는 글 1

  1. 2008.04.01 2의 보수에 대한 이해

2의 보수에 대한 이해

일반 프로그램이나 컴퓨터에서 음수의 표현은 하이픈(-) 을 숫자에 앞에 붙이는 것으로
표현한다.

하지만  기계어 수준으로 내려간다면 단순히 0과1로 구성된 이진수 체계로 구성되어 있는데,
이때는 하이픈(-)이라는 표시를 어떻게 표현해야할까?

기계어 수준에서는 2의 보수라는 것을 이용한다.

예를들어, 5 의 경우 2의 보수는. 다음과 같은 과정을 거친다.

(1) 일단 1의 보수를 만들고

    5의 이진수는 0000000000000101(2)
    위의 값을 0은 1로, 1은 0으로 바꾸는 것으로 1의 보수화를 한다.
    결과는 따라서
1111111111111010(2)

(2) 1의 보수에 1을 더한다.

    5에대한 1의 보수 + 1
    = 1111111111111010(2) + 1(2)
    = 1111111111111011(2)

(3) 5에 대한 2의 보수를 구했다.

    1111111111111011(2) 가 5에 대한 2의 보수이다.

(4) 5에 대한 2의 보수와 5의 이진수 값을 더하면, 마이너스와 같은 역할을 한다.

    0000000000000101(2) + 1111111111111011(2)
    = 1000000000000000(2)

(5) 최상휘 비트에 대한 올림의 경우 해당 변수의 영역을 넘어섬으로,
    무시된다.

어떤가 알고나니 신기하지 않은가....? ^^