개요

r 진수 N 에 대해 두 가지의 보수가 있다.

  • r의 보수 (r's complement)
  • r-1의 보수 (r-1's complement)

예를 들면 다음과 같다.

  • 2진수에는 2의 보수와 1의 보수가 있다.
  • 8진수에는 8의 보수와 7의 보수가 있다.
  • 10진수에는 10의 보수와 9의 보수가 있다.

정의

r의 보수와 (r-1)의 보수의 관계

r의 보수= (r1)의 보수 + 가장 낮은 자리의 1 

r의 보수

정수부분이 n개의 자리로 구성된 r진수 N에 대한 r의 보수는 (식2.2)와 같이 정의된다.1

[KIM] 2.1.2 보수.  2

N에 대한 r의 보수={rnN,N00,N=0

10진수 예제

10진수 42의 10의 보수를 구해보자.

  • 주어진 숫자는 42 이므로, N=42.
  • 정수부분은 42. 2개의 자리로 이루어져 있으므로, n=2 이다.
  • 10진수 숫자이므로 r=10.

이를 종합하면 다음과 같다.

rnN=10242=58

쉽게 계산하려면 42보다 크면서 가장 작은 10의 거듭제곱수인 100에서 42를 빼주면 된다.

10042 이다.


이번에는 10진수 42.31의 10의 보수를 구해보자.

  • 주어진 숫자는 42.31 이므로, N=42.31.
  • 정수부분은 42. 2개의 자리로 이루어져 있으므로, n=2 이다.
  • 10진수 숫자이므로 r=10.

이를 종합하면 다음과 같다.

rnN=10242.31=57.69

2진수 예제

2진수 1101112의 2의 보수를 구해보자.

6자리 수이므로 261101112를 계산해주면 된다.

rnN=261101112=100000021101112=0010012=10012

기계적으로는 모든 비트를 뒤집은 다음 1을 더해주면 2의 보수를 쉽게 구할 수 있다.

  • 110111
  • 001000 - 모든 비트 반전 (1의 보수)
  • 001001 - 가장 마지막 자리에 1을 더해준다 (2의 보수)

소수점이 있어도 구하는 방법은 같다.

2진수 1101.112의 2의 보수를 구해보자.

rnN=241101.112=10000.0021101.112=10.012

기계적으로 구하는 것이 더 쉽다.

  • 1101.11
  • 0010.00 - 모든 비트 반전 (1의 보수)
  • 0010.01 - 가장 마지막 자리에 1을 더해준다 모든 비트 반전 (2의 보수)

r-1의 보수

정수부분이 n개의 자리로 구성되고 소수점 아래가 m개의 자리로 구성된 r진수 N에 대한 (r-1)의 보수는 (식2.3)과 같이 정의된다.1

[KIM] 2.1.2 보수.  2

N에 대한 (r1)의 보수=rnrmN

10진수 예제

10진수 42의 9의 보수를 구해보자.

  • 주어진 숫자는 42 이므로, N=42.
  • 정수부분은 42. 2개의 자리로 이루어져 있으므로, n=2 이다.
  • 소수점 아래는 없으므로, m=0 이다.
  • 10진수 숫자이므로 r=10.

이를 종합하면 다음과 같다.

rnrmN=10210042=100142=9942=57

100142 라는 것을 알 수 있다.

쉽게 계산하려면 42보다 크면서 가장 작은 10의 거듭제곱수인 100에서 1을 빼고 42를 빼주면 된다.

9942 이다.


이번에는 10진수 42.31의 9의 보수를 구해보자.

  • 주어진 숫자는 42.31 이므로, N=42.31.
  • 정수부분은 42. 2개의 자리로 이루어져 있으므로, n=2 이다.
  • 소수점 아래 .31은 2개의 자리로 이루어져 있으므로, m=2 이다.
  • 10진수 숫자이므로 r=10.

이를 종합하면 다음과 같다.

rnrmN=10210242.31=1000.0142.31=10042.32=57.68

2진수 예제

2진수 1101112의 1의 보수를 구해보자.

6자리 수이므로 26201101112를 계산해주면 된다.

rnrmN=2611101112=1000000211101112=0010002=10002

기계적으로는 모든 비트를 뒤집어 주기만 하면 1의 보수를 쉽게 구할 수 있다.

  • 110111
  • 001000 - 모든 비트 반전 (1의 보수)

소수점이 있어도 구하는 방법은 같다.

2진수 1101.112의 1의 보수를 구해보자.

rnrmN=24221101.112=10000.0020.011101.112=1111.1121101.112=10.002

기계적으로 구하는 것이 더 쉽다.

  • 1101.11
  • 0010.00 - 모든 비트 반전 (1의 보수)

참고문헌

  • [KIM] 디지털논리회로 / 김형근, 손진곤 공저 / 한국방송통신대학교출판문화원 / 3개정판 4쇄 2021년 01월 25일

주석

  1. [KIM] 2.1.2 보수.  2