Computer Science/Computer Archiecture
음수 표현을 위한 보수법
Hyowon_
2025. 6. 17. 20:17
728x90
- 2의 보수법은 음수를 0과 1만으로 표현하면서도 덧셈/뺄셈 연산을 단순하게 해주는 이진수 방식이다.
- 보수(補數) : 어떤 수를 기준으로, 더했을 때 특정 값이 되도록 만들어진 짝수
- 즉, "이 숫자랑 더하면 딱 기준값 되는 숫자" = 보수
- 2의 보수법을 사용하는 컴퓨터는 "맨 앞 비트(MSB)"를 부호 판단용으로 사용한다.
이진수 MSB 해석 방식 (2의 보수 기준) 결과 01111111 0 양수 +127 00000001 0 양수 +1 10000000 1 음수 -128 11111111 1 음수 -1 - MSB = 0 → 양수, MSB = 1 → 음수
예시
기준값: 10
- 3의 10의 보수는? → 7 (3 + 7 = 10)
- 6의 10의 보수는? → 4
- 0의 10의 보수는? → 10
2의 보수는?
- 기준값이 2가 아니다.
- ‘2진수에서의 보수’라는 뜻 → 즉, 기준값은 2ⁿ (4비트면 기준은 2⁴ = 16) 다시 말해, 어떤 이진수 A에 대해, A + A의 2의 보수 = 0 (모듈로 2ⁿ 기준) 되는 숫자
구분 설명 만드는 법 1의 보수 모든 비트를 반전 (0↔1) ~A (비트 반전) 2의 보수 1의 보수 + 1 ~A + 1
예제1) 2의 보수로 -5 표현(8비트 기준)
1단계 : 양의 정수 5를 이진수로 바꾸기 5 → 00000101
2단계 : 1의 보수 (비트 반전) → 11111010
3단계 : 더하기 1 → 11111011
예제2) 5 + (-3) 계산하기
1단계 : 5 = 00000101
2단계 : -3 = 양수 3 = 00000011 → 1의 보수 취하기 = 11111100 → 2의 보수 11111101
3단계 : 두 수를 더하기
0 | 0 | 0 | 0 | 1 | 0 | 1 |
1 | 1 | 1 | 1 | 1 | 0 | 1 |
0 | 0 | 0 | 0 | 0 | 1 | 0 |
→ 정답 : 00000010
오버플로우(Overflow)란?
- 컴퓨터가 표현할 수 있는 수의 범위를 넘었을 때 발생하는 현상.
예제1) 8비트 오버플로우
0111 1111 = 127
+ 0000 0001 = 1
= 1000 0000 = -128 → 오버플로우
- 원인 : 정해 진 비트 수로 인해 더 큰 숫자를 담을 공간이 없어서 MSB가 뒤집어지는 현상이 발생
4비트, 16비트의 경우
예제1) 4비트
0011 = 3
+ 1111 = -1
= 0010 → = 2
16진수, 16비트
0x란? 16진수 숫자라는 표기 방식임.
0x5 = 5
16진수 | 2진수 (16비트) | 10진수 (2의 보수) |
0x0001 | 0000 0000 0000 0001 | +1 |
0xFFFF | 1111 1111 1111 1111 | -1 |
0xFFFE | 1111 1111 1111 1110 | -2 |
0x8000 | 1000 0000 0000 0000 | -32,768 |
0x7FFF | 0111 1111 1111 1111 | +32,767 |
예제2) 16비트
0000 0000 0000 0011 (3)
1111 1111 1111 1101 (-3)
----------------------------
0000 0000 0000 0000 → 0
728x90