음수의 표현(보수)

난1렙이요·2024년 9월 12일

컴퓨터 회로

목록 보기
3/15

보수(Complements)

컴퓨터에서는 양수과 음수(+와-)를 구별하기 위해 보수를 사용한다.

r-1의 보수

Diminished Radix Complement
숫자 N이 r진수이고 n개의 자릿수를 가지고 있다면

(r-1)의 보수 = (r^n - 1) - N

로 정의할 수 있다.

10진수에서, 9의 보수로 나타내는 546700은
546700 = 999999 - 546700 = 453299

2진수에서, 1의 보수로 나타내는 1011000은
1111111 - 1011000 = 0100111


r의 보수

Radix Complement

r의 보수 = r^n - N

r의 보수는 r-1의 보수에서 1을 더해주면 된다.

10진수에서, 10의 보수로 나타내는 546700은
546700 = 999999 - 546700 + 1 = 453300

2진수에서, 2의 보수로 나타내는 1011000은
1111111 - 1011000 + 1 = 0101000


쉽게 2의 보수를 구하는 방법

1011100의 2의 보수는 1111111 - 1011100 + 1 = 0100011 + 1 = 0100100이다.
1011100의 LSB부터 시작해서 첫번째 1이 나올때까지는 유지하다가 1이 나온 다음부터 반전을 시켜주면 된다. 1011/100 -> 0100/100


뺄셈과 보수의 개념

r진법 n자리 숫자 M과 N이 있을때, M-N을 하면

  • M + (r^n-N) = M-N+r^n
  • 만약 M >= N이면, 위 식에서 r^n을 없애주면 된다. 이 과정에서 M-N은 자리수가 늘어나게 되는 end carry가 발생한다. 그 end carry를 없애주면 끝
  • 만약 M < N이면, r^n-(N-M)과 똑같다. 이 식은 (N-M)의 보수라는 뜻이다. 그러므로 N-M을 구하고 싶으면 r^n - (r^n - (N-M)) 을 풀면 N-M이 나온다. 여기서 -(N-M)을 하면 된다.

10진수 체계에서, 72532-3250을 구하라
M>=N이므로 72532+96750 - 10^5 = 169282 - 100000 = 69282

10진수 체계에서, 03250-72532을 구하라
M<N이므로 03250 + 27467 = 30717

2진수 체계에서, 1010100 - 1000011을 구하라
M>=N이므로 1010100 + 0111101 - 10000000 = 10010001 - 10000000 = 0010001

2진수 체계에서, 1000011 - 1010100을 구하라
M<N이므로 1000011 + 0101100 = 1101111

그러므로 이진 시스템에서 뺄셈은 실제로 빼는 것이 아니라, 보수를 구해서 더해주는 것을 의미한다.


이진 시스템에서의 부호

  • 일반적으로 우리는 양수를 +, 음수를 -기호를 써서 부호를 표기한다.
  • 이진 시스템은 +- 기호 대신 sign bit를 하나 둬서 부호를 표현한다. 양수는 0을, 음수는 1을 sign bit에 넣어서 표기하며 MSB앞에 사인 비트를 둬서 음양을 표기하는 경우가 대부분이다.
profile
다크 모드의 노예

0개의 댓글