2의 보수 계산기
음수를 2의 보수로 바꾸는 과정을 단계별로 보여 주고, 2진수 비트열이 부호 있는 수로 얼마인지도 계산합니다.
2진수 칸은 입력한 자릿수를 비트 수로 봅니다. 1011은 4비트로 해석합니다.
2의 보수 만드는 법
음수 −n은 n을 2진수로 쓰고, 모든 비트를 뒤집은 다음 1을 더하면 됩니다. 이렇게 하면 뺄셈을 덧셈 회로로 할 수 있어서 CPU와 ALU가 이 방식을 씁니다. N비트로 표현할 수 있는 범위는 −2N−1부터 2N−1−1까지입니다.
풀이 예제: −5를 8비트 2의 보수로
- 절댓값 5를 8비트 2진수로: 0000 0101
- 모든 비트를 뒤집습니다: 1111 1010
- 1을 더합니다: 1111 1011 = 0xFB
- 확인: 1111 1011 + 0000 0101 = 1 0000 0000 → 넘친 자리를 버리면 0
4비트 2의 보수표
| 비트 패턴 | 부호 없는 수 | 2의 보수 |
|---|---|---|
| 0000 | 0 | 0 |
| 0001 | 1 | +1 |
| 0010 | 2 | +2 |
| 0011 | 3 | +3 |
| 0100 | 4 | +4 |
| 0101 | 5 | +5 |
| 0110 | 6 | +6 |
| 0111 | 7 | +7 |
| 1000 | 8 | -8 |
| 1001 | 9 | -7 |
| 1010 | 10 | -6 |
| 1011 | 11 | -5 |
| 1100 | 12 | -4 |
| 1101 | 13 | -3 |
| 1110 | 14 | -2 |
| 1111 | 15 | -1 |
비트 수별 표현 범위
| 비트 수 | 부호 있는 범위 | 부호 없는 범위 |
|---|---|---|
| 4 | -8 ~ 7 | 0 ~ 15 |
| 8 | -128 ~ 127 | 0 ~ 255 |
| 16 | -32,768 ~ 32,767 | 0 ~ 65,535 |
| 32 | -2,147,483,648 ~ 2,147,483,647 | 0 ~ 4,294,967,295 |
자주 묻는 질문
8비트 2의 보수로 −1은 어떻게 되나요?
1111 1111(0xFF)입니다. 1을 0000 0001로 쓰고, 모든 비트를 뒤집어 1111 1110을 만든 뒤 1을 더합니다.
2의 보수에서 음수인지 어떻게 알 수 있나요?
맨 앞 비트를 보면 됩니다. 1이면 음수이고, 값은 부호 없는 값에서 2의 비트 수 제곱을 뺀 것입니다.