jeonggunlee / LogicDesign

논리 회로 및 실험: 2024 봄학기, 한림대학교 소프트웨어융합대학
https://github.com/jeonggunlee/LogicDesign
12 stars 8 forks source link

3-7 동영상에서 질문 있습니다. #14

Open leegw13 opened 4 years ago

leegw13 commented 4 years ago

부호/절댓값 표현법에서는 최상위 비트가 부호로 사용되고 2의 보수 표현법에서는 최상위 비트를 10진수로 바꿨을 때 -2^(N-1)로 바뀌는 건가요? 그리고 c언어에서는 어떻게 동작하나요?

jeonggunlee commented 4 years ago

안녕하세요! 질문 탱큐!

부호/절댓값 표현법에서는 최상위 비트가 부호로 사용되고

네! 맞아요! 부호/절대값 표현법에서는 최상위 비트가 "부호 비트"로만 활용됩니다!

2의 보수 표현법에서는 최상위 비트를 10진수로 바꿨을 때 -2^(N-1)로 바뀌는 건가요?

네! 맞아요! 부호/절대값 표현법에서는 최상위 비트가 "부호 비트"로만 활용되는 것에 반하여, 2의 보수 표현법에서는 최상위 비트가 "-2^(N-1)"의 가중치를 갖게 됩니다! 근데, 재밌는 것은 나머지 비트의 양수 가중치가 모두 더해지더라도 "-2^(N-1)"와 더해지면 -1이 되기 때문에 2의 보수 표현 방법에서도 최상위 비트가 여전히 "부호 비트"의 역활을 하게 됩니다.

예를 들어, 4비트의 경우를 예를 들어보죠.

1000 = -2^3 = -8 입니다. 1111 = -2^3 + 2^2 + 2^1 + 2^0 = -8 + 4 + 2 + 1 = -1

위에서 알수 있듯이, 최상위 비트가 1이면 2의 보수 표현 방법에서 무조건 값은 음수가 되고 따라서 최상위 비트가 부호 비트의 역활을 할수 있음을 알 수 있습니다!

그리고 c언어에서는 어떻게 동작하나요?

C 언어에서도 위와 같이 해석될 수 있습니다. 모든 대부분의 컴퓨터에서 2의 보수 표현 방법을 사용하기 때문에 위에 설명한 바와 같이 동작을 하게 됩니다. 이것은 굳이 C 언어에 국한 된것이 아니라 본질적으로 컴퓨터가 수의 표현에 있어 2의 보수 표현방식을 사용하기 때문에 어떤 프로그래밍 언어를 사용하던 동작은 같다고 볼수 있습니다.

감사합니다.

jeonggunlee commented 4 years ago

영상 설명 추가하였습니다.

https://youtu.be/uHZf-hGmeNk