3-7 동영상에서 질문 있습니다.
Opened this issue · 2 comments
부호/절댓값 표현법에서는 최상위 비트가 부호로 사용되고
2의 보수 표현법에서는 최상위 비트를 10진수로 바꿨을 때 -2^(N-1)로 바뀌는 건가요?
그리고 c언어에서는 어떻게 동작하나요?
안녕하세요! 질문 탱큐!
부호/절댓값 표현법에서는 최상위 비트가 부호로 사용되고
네! 맞아요! 부호/절대값 표현법에서는 최상위 비트가 "부호 비트"로만 활용됩니다!
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의 보수 표현방식을 사용하기 때문에 어떤 프로그래밍 언어를 사용하던 동작은 같다고 볼수 있습니다.
감사합니다.
영상 설명 추가하였습니다.