본문 바로가기
컴퓨터공학기초 개념/컴퓨터구조

4. 데이터 표현 - 1의 보수(one's complement)

by devraphy 2021. 8. 3.

1. 2진법에서 보수를 사용하는 방법

a) 1의 보수(one's complement)란?

- 2진법에서 보수를 사용하여 음수를 표현하는 방식이다. 

- 어떻게 구하는지 아래의 예시를 통해 알아보자. 

 

b) 1의 보수를 구하는 방법

- 위의 그림처럼, 십진법으로 표현된 음수 -10을 2진법으로 어떻게 표현하는지 알아보자. 

- 우선 +10을 이진법으로 계산하여 1010을 만든다.

- 그리고 나서 1과 0을 서로 바꿔준다. 1010 → 0101

- 이렇게 이진법으로 양수를 먼저 구하고, 1과 0을 바꾸어 음수를 구한다.

 

- 이것이 이진법으로 음수를 표현하는 방법이다. 

- 이것이 이진법에서 -10의 보수를 구하는 방법이다. 

- 즉, 1의 보수를 구하는 방법이다.  

 

c) XoR(exclusive or) - 반전

- 위에서 1을 0으로, 0을 1로 바꾸는 방법을 통해 1의 보수를 구했다. 

- 이 과정은 XoR 연산자를 사용해서 구해지게 되는 것이다. 

- XoR 연산은 두 수가 같다면 0, 두 수가 틀리면 1을 반환하는 연산이다. 

- 1010과 1111을 XoR 연산을 한다면 0101이 된다. 

- 이는 논리회로에서 사용되는 연산방법 중 하나이다. 

 

d) 캐리(Carry), 1의 보수 연산의 핵심

- 1의 보수를 계산할 때, 반드시 알아야 하는 개념이 있다. 

- 다음 예시를 통해서 알아보자. 

- 위의 계산 과정을 2진법으로 1의 보수를 구해서 풀어보자. 

 

- 우선 13과 10을 2진법으로 구한다. 

- 그리고 뺄셈을 덧셈으로 바꾸기 위해 1010의 보수를 구한다.

- 이진법으로 13과 -10의 보수까지 계산했다.

- 이제 뺄셈을 덧셈으로 계산하면 된다.  

 

- 여기서 가장 중요한 점은 저 파란색 화살표이다. 

- 4비트를 가지고 계산을 했으나, 결과는 5비트가 나왔다.

- 이런 경우, 최상위 비트를 캐리(carry)라고 부르는데, 

- 이 최상위 비트를 최하위 비트에 더해준다. 

- 그 결과, 0011 이라는 이진수를 얻을 수 있다. 이는 3이 된다. 

 

e) 캐리가 없는 경우 - 음수가 양수보다 더 큰 경우 

- 만약 음수가 양수보다 더 큰 경우에는 어떻게 할까?

- 이런 경우에는 계산결과에서 캐리가 없게 되는데, 

- 다음 예시를 같이 살펴보자. 

 

- 위의 예시는 음수가 양수보다 더 큰 절대 값을 가질 때의 경우다. 

- 동일하게 10진법의 수를 2진법으로 계산한다. 

- 13을 1의 보수 법칙을 통해 음수로 만들어 준다. 

 

- 위의 결과를 토대로 덧셈을 진행한 결과, 1100이 나왔다.

- 1100을 10진법으로 바꾸면, 12라는 값이 나온다. 

- 무언가 틀렸다. 그 이유는 캐리가 없기 때문이다. 

 

- 이처럼 캐리가 없는 연산결과가 나오는 경우에 반드시 추가해야하는 과정이 있다.

- 결과값에 대한 1의 보수를 한번 더 계산한 후에 마이너스를 붙이는 것이다. 

- 많은 사람들이 이 부분에 대한 추가 연산을 하지 않는 실수를 저지른다. 

- 캐리가 없는 경우 거쳐야 하는 필수적인 과정이므로, 꼭 기억하도록 하자. 

 


[자료출처]

https://youtu.be/MlxJPWBdV0Q

 

댓글