관리 메뉴

지식잡식

음수 표현을 위한 보수법과 보수를 이용한 뺄셈⒧ 본문

IT 이론/컴퓨터구조

음수 표현을 위한 보수법과 보수를 이용한 뺄셈⒧

아이들링 2016.10.13 14:16

이해를 돕기 위해 10진법과 2진법에 대해서만 보자
10진법에는 10의 보수와 9의 보수가 있고
2진법에는 2의 보수와 1의 보수가 있다.

이렇게 각 n진법에는 n의 보수와 n-1의 보수가 주로 사용된다.

n의 보수를 구하기 위해선 주어진 숫자의 자릿수 만큼 0을 채우고 가장 왼쪽에 1을 추가하여 기준을 만든다.
n-1의 보수를 구하기 위해선 주어진 숫자의 자릿수 만큼 9를 채워 기준을 만든다.
그리고 기준값에서 주어진 숫자를 뺀다. 아래 예를 보자

48의 10의 보수는
100 -  48 = 52

48의 9의 보수는
99 - 48 = 51

그럼 이런 보수는 왜 구하는 것일까? 컴퓨터에서 뺄셈 연산을 하기 위해서이다.

90 - 48 이라는 연산을 한다고 생각해 보자. 물론 감산기를 이용해서 실제 뺄셈 연산을 해도 되지만 굳이 가산기와 감산기를 모두 구현하는 것보다 가산기만 사용하는 것이 구조적으로 깔끔하다. 이절게 가산기 밖에 없을 때 뺄셈 연산을 하려면 보수를 구해서 더해버리면 된다.

90 + 52 = 142
여기서 Carry 된 올림자리 수만 버려버리면 42

90 - 48 = 42
원하던 결과가 나온다.

9의 보수를 사용하려면 최종 결과에 Carry 된 올림자리 수를 더해주면 된다.

90 + 51 = 141
41에 1을 더하면 42

왜 굳이 이렇게 추가적인 연산 과정을 거치며 9의 보수(n-1의 보수)를 사용하는 것일까? 그리고 보수를 구하기 위해선 결국 뺄셈을 해야하는게 아닌가?

이런 의문은 다음 글에서 2진수에 대한 보수 연산을 보면 바로 이해 된다. 10진수의 보수는 이해를 돕기 위해 설명한 것이고 결국 보수는 2진 연산에 유용하게 사용되기 때문에 사용하는 것이다.
0 Comments
댓글쓰기 폼