음수를 어떻게 표현하지?
음수를 어떻게 표현하지?
- 1의 보수: 양수의 모든 비트를 반전함. 만들기가 쉽지만 0이 2개임.
- 2의 보수: 비트를 전부 반전하고 거기에 1을 더함. 덧셈 회로 하나로 뺄셈까지 처리할 수 있음.
실제 컴퓨터 시스템에서는 2의 보수가 사용된다.
1의 보수는 만들기 쉽지만 0이 2개다
1의 보수는 양수의 모든 비트를 반전함.
+5 → 0101
반전 시, 1010이 됨
장점
- 만들기가 쉽다
단점
- 1의 보수는 0이 2개임
- 0000 → 1111
- +0 ⇒ 0000
- 0 ⇒ 1111
2의 보수는 비트를 전부 반전하고 1을 더한다
방법
- 비트를 전부 반전
- 거기에 1을 더함
왜 1을 더하나
- 덧셈 회로 하나로 뺄셈까지 처리할 수 있기 때문
3을 2의 보수로 만들면
- 3은
0011 (원래 값)
1100 (반전)
1101 (+1)
이 경우 1101에서 맨 앞이 부호를 나타내며 -3으로 읽히게 된다.
5 + (-3)은 2가 됨
5+ (-3) 을 표현하면
5는
0101
- -3은
1101
5 + (-3)은
1101
0101
1 0010이 되고 여기서 가장 앞의 carry를 버리게 되면 2가 됨
Carry를 버려도 되는 이유는 2의 보수 표현 자체가 특정 비트 수를 기준으로 Modulo 연산 시스템 위에서 작동하기 때문임
고정된 크기의 비트 공간 n 비트 시스템 내에서 표현 가능한 값의 개수는 총 2의 n 승 개가 되는데
수학적으로 2의 보수 덧셈은 2의 n 승으로 나눈 나머지를 구하는 Modulo 연산과 완전히 동일하다.
예시)
- 12시간짜리 아날로그 시계를 생각해보면 13시는 결국 1시가 됨
- 또한 4시에서 5시간 전으로 연산을 하더라도 마찬가지로 11시가 되어 12시간이라는 범위 내에서 알맞은 값이 나오게 된다.