작성
·
461
1
강의에서 설명해주신 2의 보수 방법에서, 양수를 표현하는 방법에 관해 질문이 있습니다. 강의에서 -5를 예로 드신 건 이해했는데, 반대로 5를 표현하려 할 때는 어떻게 되나요?
5를 2진수로 변환->00000101(2)
->보수:11111010(2)
->더하기 1: 11111011(2)
인데, 그럼 양수 5와 음수 -5의 구분이 안 되지 않나요?
강의에서 첫 비트가 1이면 음수, 0이면 양수인 것으로 구분한다고 하셨는데, 8개 비트 앞에 부호에 해당하는 1비트를 더 둔다는 뜻인가요? 그러니까, (1/11111011->-5, 0/11111011->5) 이런 식으로 작동하는 건가요?
좋은 강의 감사합니다.
답변 1
1
안녕하세요, 질문&답변 도우미 Soobak 입니다.
네, 마지막에 말씀해주신 내용이 맞습니다.
2의 보수 방법을 이용하여 정수를 표현할 때, 실제로 양수와 음수를 구분하는 것은 가장 앞쪽의 비트, 즉, 최상위 비트를 통해 이루어집니다.
최상위 비트가 0
이면 양수, 1
이면 음수로 해석됩니다.
이 때, 양수를 표현할 때는 별도의 보수 과정을 거치지 않고, 직접적으로 2진수로 변환한 값을 사용합니다.
예를 들어, 5
를 8비트(편의를 위해) 2진수로 표현하면 다음과 같습니다.
: 0000 0101
, 이 경우, 최상위 비트가 0
이므로 양수로 해석됩니다.
반면에, -5
를 8비트 2진수로 표현할 때는 다음과 같이 2의 보수 과정을 거칩니다.
5
의 2진수 표현을 구합니다 : 0000 0101
모든 비트를 반전시킵니다 : 1111 1010
반전된 값에 1
을 더합니다 : 1111 1011
이 경우, 최상위 비트가 1
이므로, 음수로 해석되어 -5
의 값을 표현하는 것입니다.
즉, 최상위 비트가 부호를 나타내며, 나머지 비트들이 실제 값을 표현합니다.
안녕하세요, 질문&답변 도우미 Soobak 입니다.
부호있는 정수 자료형에 담긴 1111 1011
값에 대해서, 최상위 비트가 1
이므로 음수로 해석하기 위해 2의 보수 과정을 거칩니다.
즉, 111 1011
에 대한 비트 반전 000 0100
이후, 1
을 더하여 0000 0101
이 되고, 이 값은 5
가 됩니다.
이러한 과정을 통해 -5
로 해석됩니다.
감사합니다! 그런데 설명하신 방법대로라면 -5와 1111 1011=251의 구분이 안되는데, 이 문제는 어떻게 해결하는 건가요?