<aside> 💡 목차


</aside>

MSB , 1과 2의 보수 표현 범위 요약 표

![양수에서는 문제가 없지만 음수 표현에서 표현범위가 2의 보수가 다른 보수법보다 하나 더 표현할 수 있다 그 이유는 2의 보수는 -1을 표현이 가능해서

자세한 내용은 아래 내용을 확인하십시오](https://prod-files-secure.s3.us-west-2.amazonaws.com/09ccd4d5-876c-4bba-bbdf-cc77a0a11257/90960e45-57d4-4153-82c7-4cf8e2a6db5b/Untitled.png)

양수에서는 문제가 없지만 음수 표현에서 표현범위가 2의 보수가 다른 보수법보다 하나 더 표현할 수 있다 그 이유는 2의 보수는 -1을 표현이 가능해서

자세한 내용은 아래 내용을 확인하십시오

2의 보수의 표현 범위가 넓은 이유는 다음 내용과 관련있다

<aside> 💡 근데 2의 보수 왜씀?


컴퓨터의 문제는 항상 서로다른 n개의 공간을 어떻게 2진값으로 표현할것인가에 있다


Unsigned int 로 표현하면 단순 대응관계임

4비트 4자리 가지고 unsigned int로 4를 표현하면 0000 ~ 1111 해서 F(15) 까지 표현 가능

0 0 0
0 1 1
1 0 2
1 1 3

Signed int (MSB)로 표현하면 비효율적임

0 0 +0
0 1 +1
1 0 -0
1 1 +1

→ 3개의 범위밖에 표현을 못함

→ 1110(-6) 에서 0001 을 더하면 1111(-7) 이 되는 문제가…! -5가 되어야 하는데!

→ 양수쪽에 add는 정상작동하는디, 음수쪽은 문제가 많다


1의 보수법의 -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의 보수법

왜 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 범위까지 표현 가능!

즉, 16가지 표현할 수 있다!!

그리고 그냥 더하기(full adder) 써도 값이 멀~쩡함 ㅋㅋ


ADD ADDU 양수로 볼거냐 음수로 볼거냐 차이

음수가 없는 양수로 보면 1110 은 12지만,

음수가 있는 양수로 보면 1110 은 -2 다…

</aside>

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

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