ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [전산기초] 보수 Complement = 보충하는 수!
    비전공자 공부일기/:: Computer Science 2021. 7. 12. 23:31

    보수

    '보정해주는 수' 라는 뜻으로, 같은 자릿수에서 가장 큰 값이 되기 위해 필요한 수(R-1의 보수) 혹은 자릿수를 한 자리 늘리기 위해 필요한 수(R의 보수)를 뜻한다.

     

    - 컴퓨터가 기본적으로 수행하는 덧셈 연산을 이용하여 뺄셈을 수행하기 위해 사용

    - N + N' = r 일 때 N'를 N에 대한 r의 보수라고 한다

    - r진법에는 r의 보수와 r-1의 보수가 존재

      --> 10진법에는 10의 보수와 9의 보수가, 2진법에는 2의 보수와 1의 보수가 있다

     

    라고 하면 뭔 말인지 나도 모르겠으니까 쓰는 보충 설명

    우리에게 익숙한 10진수의 경우 절대값 8의 양수는 8, 음수는 -8 이런 식으로 쉽게 구할 수 있다.

    그런데 2진수를 쓰는 컴퓨터는 음수를 구하기가 쉽지 않다. 1101(2) 의 음수는 -1101(2)가 아니라는 뜻!

    양수와 음수의 특징은, 둘을 더하면 0이 된다는 점이다.

    이 점을 이진법에도 이용해서 양수 n에 더했을 때 0이 나오면 음수라고 간주하기로 하고,

    각 자릿값의 0<-->1을 변환한 값을 보수라고 하기로 하는 것이다.  ** 0<--->1 이므로 NOT Gate 이용

     

    그런데 여기에 추가적으로 1의 보수와 2의 보수라는 개념이 있다.

    1의 보수(1'Complement)는 주어진 각 자릿값을 0일 때는 1로, 1일 때는 0으로 변환한다.

    2의 보수(2'Complement)는 1의 보수를 구한 뒤 결과값에 1을 더한다.

     

    그 이유는 가장 왼쪽에 위치하는 비트를 최고값을 갖는다 하여 MSB(Most Significant Bit; 최상위비트)라고 하는데

    1의 보수에서는 MSB가 0이 된다. MSB가 0이라는 말은 양수라는 뜻이므로, 개념에 위반된다.

    따라서 앞의 값에 +1을 해주는, '2의 보수'라는 개념을 쓰는 것이다.

     

    * TIP *

    2의 보수를 구하는 좀 더 쉬운 방법은,

    최하위(맨 오른쪽) 위치에서 왼쪽 방향으로 첫 번째 1이 나올 때까지는 그냥 쓰고 나머지는 반대로 쓰는 것이다.

     

    ex) 1 0 1 0 1 1 0 0의 2의 보수 --> 반대로 씀 0 1 0 1 0  1 0 0 그대로 씀

     

     

     

     

     

     

    댓글

coding wanee