본문 바로가기
학교 수업/컴퓨터구조

[컴퓨터 구조] 10의 보수 2의 보수, 보수에 관해 1

by Godgil 2020. 4. 1.

컴퓨터 구조에서 다루는 보수라는 개념을 정리 해 보려고 한다.

 

 

먼저 알아야 할 것은, 컴퓨터는 더하기 밖에 할 줄 모르는 기계라고 한다.

그럼 뺄셈을 어떻게 이해하느냐. 바로 뺄샘을 덧셈으로 바꿔서 계산한다.

 

예를들어 13 - 7 같은 경우 13 + (-7) 로 계산한다고 한다.

 

r진법에는 r의 보수와 (r-1)의 보수가 있다.

무슨 말이냐면, 10진법에는 10의 보수와 9의 보수가 있고, 2진법에는 2의 보수와 1의 보수가 있다는 말이다.

 

그렇다면 이해하기 편하게, 우리가 사용하는 10진법으로 보수를 알아보자.

위에서 말했듯이 10진법에는 10의 보수와 9의 보수가 있다.

 

9의 보수 먼저 알아보도록 하자.

9의 보수는 어떤 숫자가 N이 주어지면 숫자 N의 각 자리숫자를 9에서 뺸 것과 동일하다.

 

역시 말로 쓰니까 어렵다. 예를 들도록 하자.

 

숫자 529의 9의 보수는 무엇인가?

>> 1. 숫자 529의 각 자리수를 9에서 뺀 값이 529의 9의 보수이다.

>> 2. 999 - 529 = 470

  

위처럼 470이 숫자 529의 9의 보수가 된다.

이걸 어떻게 써 먹는지는 잠시 후에 알아보고 10의 보수부터 알아보자.

 

10의 보수는 어떤 숫자 N이 주어지면 숫자 N을 제일 큰 자리수에서 올림한 수에서 뺀 것이다.

 

이것도 말로 쓰니까 더 어렵다. 위와 같은 숫자로 예를 들어보자.

 

숫자 529의 10의 보수는 무엇인가?

>> 1. 숫자 529를 제일 큰 자리수에서 올림하면 1000이다.

>> 2. 1000 - 529 = 471

 

위처럼 471이 숫자 529의 10의 보수이다.

 

보면 알겠지만, 9의 보수에 + 1을 한 값이 10의 보수가 나온다.

10의 보수를 구하는 과정보다 9의 보수를 구하는 과정이 쉬우니, 9의 보수를 구해서 1을 더하는

계산이 편리하다.

 

자 그럼 이렇게 나온 보수를 써 먹어보자.

보수는 컴퓨터에서 뺄셈 연산을 할 때 사용한다고 했었다.

 

600 - 529를 보수를 이용해서 계산 해 보자.

>> 1. 먼저 위의 식은 600 + (-529)로 표현 할 수 있다.

>> 2. -529의 10의 보수는 471이다.

>> 3. 600 + 471 = 1071이다.

>> 4. 천의 자리의 1은 올림 수 이다.

        뺄셈에서 올림수는 나오지 않으니, 과감히 버리도록 한다.

>> 5. 그러면 071 즉 71이라는 값이 나온다.

>> 6. 실제로 계산 해 보자. 600 - 529 = 71

 

같은 값이 나오는 것을 확인 할 수 있다.

 

같은 원리로 2진법에서는 2의 보수와 1의 보수를 사용한다.

 

 

1011001(2)의 1의 보수는 9의 보수와 비슷하게 각 자리수를 1로 만든 후에 뺄셈을 하면 된다.

 

 1111111

-1011001 = 0100110(2) : 1011001의 1의 보수

 

잘 보면 알겠지만 1의 보수는 그냥 1과 0을 뒤집어 놓은 것이다.

 

10진법에서 10의 보수는 9의 보수에 1을 더해주면 됐다.

역시, 2진법에서 2의 보수는 1의 보수에 1을 더해주면 된다.

 

그냥 2의보수를 구하는 방법은 10의 보수와 동일하게, 제일 큰 자리수에서 올림을 한 뒤 뺄셈을 하면 된다.

해보면 알겠지만 되게 헷갈린다. 그래서 그냥 1의 보수에 1을 더하도록 하자.

 

그래서, 1011001의 2의 보수는 0100111이다.

 

그러면 1110010 - 1011001을 계산 해 보자.

>>1. 뺄셈을 할 수 없으므로 1110010 + (-1011001)을 하게된다.

>>2. 1011001의 2의보수는 0100111이다.

>>3. 1110010 + 0100111 은 10011001가 나온다.

>>4. 자리수가 늘어나고, 올림 수가 발생했다. 올림수는 과감히 버리도록 하자.

>>5. 버리면 0011001이 나온다.

>>6. 2진수값을 10진수로 계산 해 보자. 

       1110010 = 114

       1011001 = 89

       0011001 = 25

>>7. 114 - 89 = 25가 나오는걸 확인 할 수 있다.  

 

숫자 몇개 잡아서 직접 계산하다보면, 이해가 될 것이다.

아. 이게 왜 저렇게 되냐면

114 - 89 = 25 라는 식에서 양 변에 100을 더해보자

114 + ( 100 - 89 ) = 100 + 25 

114 + 11 = 100 + 25 = 125

굵게 표시한 부분이 10의 보수를 구한 부분이다.

양 변에 100을 더해줬으니, 다시 100을 빼 주면

25라는 값이 나오게 된다.

 

이렇게 보수를 이용하면 뺄셈을 덧셈으로 구할 수 있게 된다.

 

정리하자면

1. 보수는 뺄셈을 덧셈으로 표현할 때 사용한다.

2. 보수는 결국 더해서 10을 만드는 개념이다.

3. 10진법에서는 10의 보수와 9의 보수를 사용한다, 9의 보수 + 1 = 10의 보수이다.

4. 2진법에서는 2의 보수와 1의 보수를 사용한다. 역시 1의 보수 + 1 = 2의 보수이다.

5. 1의 보수는 0과 1를 뒤집으면 된다.

6. 2진법 뺄셈을 할 때는 마이너스가 있는 값을 2의 보수를 취해주면 된다. 2의 보수 구하기가 까다로우니 1의 보수에서 1을 더하도록 하자.

7. 보수의 덧셈 과정에서 올림 수가 나오게 되면, 그 수는 과감히 버리도록하자 (자리수가 올라가면 올라간 자리는 버리자.)

 

댓글