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의 보수를 한번 더 계산한 후에 마이너스를 붙이는 것이다.
- 많은 사람들이 이 부분에 대한 추가 연산을 하지 않는 실수를 저지른다.
- 캐리가 없는 경우 거쳐야 하는 필수적인 과정이므로, 꼭 기억하도록 하자.
[자료출처]
'컴퓨터공학기초 개념 > 컴퓨터구조' 카테고리의 다른 글
6. 데이터 표현 - 2의 보수를 사용하는 이유 (3) | 2021.08.03 |
---|---|
5. 데이터 표현 - 2의 보수 (Two's complement) (0) | 2021.08.03 |
3. 데이터 표현 - 보수(Complement)란? (0) | 2021.08.03 |
2. 데이터의 표현 - 진법 (0) | 2021.08.02 |
1. 컴퓨터의 구성요소 및 기능 (0) | 2021.08.02 |
댓글