32767을 이진수로 바꾸면 0111 1111 1111 1111이면 2의보수하면 1을 더해서 1000 0000 0000 0000 이 나오는거까진 알겠어요
그런데 왜 이진수로 바꾸고 2의보수를 해야하나요? <-----------------첫번째 질문
---------------------------------------------------------------------------------------
그리고 음수를 알려면 오른쪽에서 첫번째 1이 나올때까지 그대로 쓰고 반전시키면 된다는데
값이 만약 0111 1111 1111 1010 이면 값이 어떻게 되나요? (음수의 2의보수로)
1000 0000 0000 0100 이 답이 맞나요? <-------------------------두번째 질문
안녕하세요 길벗수험서 운영팀입니다.
[1]
이전에 답변드린 것과 동일합니다.
프로그래밍 언어에서 숫자처리를 할 때 맨 앞 비트는 부호비트 이므로 양수면 0, 음수면 1로 표시됩니다.
이 값이 변화되어 음수로 인식하게 된 것입니다.
여기서 다시 음수는 컴퓨터에서 2의 보수로 표현된 것으로 인식합니다.
실제 값을 구하기 위해서는 다시 2의 보수화를 수행하여 원래 값을 찾아낸 후 음수(-) 표시를 해야 정상적인 값이 구해지죠.
[2]
아 이전에 설명드린 것과 다른 2의 보수화 방법입니다.
'오른쪽에서 첫번째 1이 나올때까지 그대로 쓴다'는 것은 그 첫번째 1까지 그대로 쓰라는 의미입니다.
즉, 오른쪽의 10을 그대로 쓰고 나머지를 반전시켜야 하죠.
1000 0000 0000 0110 이 정답입니다.
행복한 하루되세요 :)
-
관리자2019-05-09 10:46:29
안녕하세요 길벗수험서 운영팀입니다.
[1]
이전에 답변드린 것과 동일합니다.
프로그래밍 언어에서 숫자처리를 할 때 맨 앞 비트는 부호비트 이므로 양수면 0, 음수면 1로 표시됩니다.
이 값이 변화되어 음수로 인식하게 된 것입니다.
여기서 다시 음수는 컴퓨터에서 2의 보수로 표현된 것으로 인식합니다.
실제 값을 구하기 위해서는 다시 2의 보수화를 수행하여 원래 값을 찾아낸 후 음수(-) 표시를 해야 정상적인 값이 구해지죠.
[2]
아 이전에 설명드린 것과 다른 2의 보수화 방법입니다.
'오른쪽에서 첫번째 1이 나올때까지 그대로 쓴다'는 것은 그 첫번째 1까지 그대로 쓰라는 의미입니다.
즉, 오른쪽의 10을 그대로 쓰고 나머지를 반전시켜야 하죠.
1000 0000 0000 0110 이 정답입니다.
행복한 하루되세요 :)