<aside> 💡 목차
</aside>

양수에서는 문제가 없지만 음수 표현에서 표현범위가 2의 보수가 다른 보수법보다 하나 더 표현할 수 있다 그 이유는 2의 보수는 -1을 표현이 가능해서
자세한 내용은 아래 내용을 확인하십시오
<aside> 💡 근데 2의 보수 왜씀?
컴퓨터의 문제는 항상 서로다른 n개의 공간을 어떻게 2진값으로 표현할것인가에 있다
4비트 4자리 가지고 unsigned int로 4를 표현하면 0000 ~ 1111 해서 F(15) 까지 표현 가능
| 0 | 0 | 0 |
|---|---|---|
| 0 | 1 | 1 |
| 1 | 0 | 2 |
| 1 | 1 | 3 |
| 0 | 0 | +0 |
|---|---|---|
| 0 | 1 | +1 |
| 1 | 0 | |
| 1 | 1 | +1 |
→ 3개의 범위밖에 표현을 못함
→ 1110(-6) 에서 0001 을 더하면 1111(-7) 이 되는 문제가…! -5가 되어야 하는데!
→ 양수쪽에 add는 정상작동하는디, 음수쪽은 문제가 많다
-0 ’없는 수 문제’0111 (+7)
1000 (-7)
→ 1000 (-7) 에서 0001 (+1) 을 더하면 1001(-6) 오 잘 작동한다!
→ 하지만, 1110(-1) 에서 0001(+1)을 더하면, 1111(-0) 엥? 뭐냐 이거?
→ 1110(-1) 에서 +1 을 해서 +0이 되어야 하는데, 실제 갭은 +2 를 해야하는 문제가 있다.
→ -1 과 +0 사이에 존재하지 않는 수인 -0이 존재하여 오류가 존재함. 이 문제를 해결하기 위해 2의 보수법이 등장함
왜 2의 보수에선 값을 뒤집고 1을 더할까?
→ 0000을 뒤집으면 1111이 됨. 여기서 1을 더하면 다시 0000이 됨
→ 0001 을 뒤집으면 1110 이 됨. 여기서 1을 더하면 1111이 됨
→ 1과 +0 사이에 갭이 하나만 벌어진다
(1의 보수에선 2개가 벌어져서 문제가 있었음)
2의 보수법 4bit로 표현할 수 있는 범위는 +7 ~ -7 즉 15가지인가..?
그냥 Unsigned로 표현하면 16가지인데 2의 보수법이 15개면 이것도 1의보수랑 다를바없는거 아니냐?
→ NO!!! 2의 보수법에서는 1의 보수와 달리 -0이라는 값이 없기때문에, 값을 하나 더 사용할 수 있는데, 1000 값을 사용할 수 있어 +7 ~ -8 범위까지 표현 가능!
그리고 그냥 더하기(full adder) 써도 값이 멀~쩡함 ㅋㅋ
음수가 없는 양수로 보면 1110 은 12지만,
음수가 있는 양수로 보면 1110 은 -2 다…
</aside>

다음 설명을 도표로 정리하면 다음과 같다