Unsigned

 

부호가 없는 양수인 2진수를 10진수로 바꾸는 공식은 다음과 같습니다.

충분히 이해할만합니다.


 

Signed

 

부호가 존재하는 2진수에 대해서는 다음 공식을 적용해야합니다.

 

 


 

적당한 증명

 

왜 이런공식이 나오는지 생각해보자면

아래 w가 3인 binary수를 unsigned와 signed를 매칭시켰습니다.

 

Unsigned

 

000 에서 100이 될 때 앞자리에 1이 생기면서 4가 더해집니다.

001 에서 101이 될 때 앞자리에 1이 생기면서 4가 더해집니다.

 

즉, 어찌보면 당연하지만 앞자리는 4를 단지 더해주는 역할을 합니다.

 

 

Signed

 

000 에서 100이 될 때 앞자리에 1이 생기면서 -4가 더해집니다.
001 에서 101이 될 때 앞자리에 1이 생기면서 -4가 더해집니다.

 

즉, 앞자리는 4를 빼주는 역할을 합니다.

때문에 위의 공식에서 맨 앞자리에 마이너스를 곱해서 더합니다.

 


 

Unsigned와 Signed의 관계성

 

위 공식을 이용해서 B2U에서 B2T를 빼보면, 저 수식이 생길겁니다.

만약, 맨 앞자리 비트가 1이라고 가정하면

다시말해서, Unsigned에서는 양수이고 Signed에서는 음수인 숫자로 한정했을 때,

B2U - B2T = 2^w가 됩니다.

 

이 관계성은 Signed 타입의 숫자에서 Unsigned 타입의 숫자로 변환하거나 그 반대로 변환할 때 유용합니다.

'CS:APP' 카테고리의 다른 글

Pipelining의 성능 측정과 비교  (0) 2023.12.04
[CS:APP] BombLab Phase6 해설  (0) 2023.10.20
[CS:APP] BombLab Phase5 해설  (0) 2023.10.20
[CS:APP] BombLab Phase4 해설  (0) 2023.10.20
[CS:APP] BombLab Phase3 해설  (0) 2023.10.20

+ Recent posts