안녕하세요~
223쪽에서 2의 보수를 구하는 방법으로
1의 보수의 맨 오른쪽에서 왼쪽 방향으로 0이 나올때까지는 반대로 써주고
나머지는 그대로 써주면 된다고 돼있는데요.
58쪽의 5번 문제에서 1의 보수가 ...11111000이고
이를 위의 방법으로 2의 보수로 바꾸면 그대로 ...11111000이 되어야 할 것 같은데
정답은 왜 ...00001000인가요?
아니면 1의 보수에 1을 더하는 방법을 써도 ...11111001인데 어떻게 정답이 나오는지 이해가 안됩니다.
답변 주시면 감사하겠습니다.
안녕하세요 길벗수험서 운영팀입니다.
해당 문제를 정확히 이해하셔야 합니다.
58쪽의 5번 문제는 ~비트 연산을 수행한 결과물이 2의 보수로 표현된 음수이므로,
해당 표현을 정수로 표현하기 위해서 다시 2의 보수로 표현하는 것입니다.
~비트 연산이 1의 보수와 동일하게 Not을 수행하는 것이기 때문에 착각하신듯 합니다.
먼저 ~비트 연산(=1의 보수 = Not연산)을 수행한 결과가
....1111 1000 입니다.
이것을 정수로 변환하기 위해 2의 보수화 하는 것입니다.(부호 비트=맨 앞자리가 1이기 때문에)
때문에 ...1111 1000 에 1을 더하는 것이 아닌, 2의 보수화를 시키게 되면
....0000 1000이 나오게 됩니다.
행복한 하루되세요 :)
-
관리자2019-04-05 11:00:00
안녕하세요 길벗수험서 운영팀입니다.
해당 문제를 정확히 이해하셔야 합니다.
58쪽의 5번 문제는 ~비트 연산을 수행한 결과물이 2의 보수로 표현된 음수이므로,
해당 표현을 정수로 표현하기 위해서 다시 2의 보수로 표현하는 것입니다.
~비트 연산이 1의 보수와 동일하게 Not을 수행하는 것이기 때문에 착각하신듯 합니다.
먼저 ~비트 연산(=1의 보수 = Not연산)을 수행한 결과가
....1111 1000 입니다.
이것을 정수로 변환하기 위해 2의 보수화 하는 것입니다.(부호 비트=맨 앞자리가 1이기 때문에)
때문에 ...1111 1000 에 1을 더하는 것이 아닌, 2의 보수화를 시키게 되면
....0000 1000이 나오게 됩니다.
행복한 하루되세요 :)