비트 연산자 ~ 관련 하여 문의 드립니다..
113페이지 문제 3에서는
비트연산자 ~에 대해 2의 보수를 취했는데
124P24번에서는 2의 보수을 구하지 않고
연산이 이루어 졌습니다.
** 어느 때 비트연산자 ~ 에 대한 값을 2의 보수를 취하여 계산하고
어느때 취하지 않고 구하는지 답변 부탁드립니다.
안녕하세요 길벗수험서 운영팀입니다.
컴퓨터에서 음수를 처리할 때 2의 보수로 처리합니다.
이것을 컴퓨터가 아닌 사용자가 볼 수 있도록 printf("%d", A)를 통해 출력하는 경우 원래 수로 나타내기 위해 다시 2의 보수화를 하여 보여주는 것이죠.
(사람용 음수 -> 2의보수화 -> 컴퓨터용 음수 -> 2의보수화 -> 사람용 음수)
문제3번의 경우 음수(~(not)을 통해 음수화된 비트)를 출력하기 위해 2의 보수화로 처리한 것입니다.
문제24번은 a&b&~b을 처리한 결과 나온 비트는 맨 앞의 부호비트가 '0'이기 때문에 양수입니다.
(컴퓨터 내부에서 처리시에는 굳이 2의보수화가 필요 없습니다. 출력시에만 원래 수로 사람에게 보여주기 위해 2의보수화 처리를 합니다.)
때문에 출력시 굳이 2의 보수화가 필요 없죠.
행복한 하루되세요 :)
-
관리자2019-06-17 13:39:37
안녕하세요 길벗수험서 운영팀입니다.
컴퓨터에서 음수를 처리할 때 2의 보수로 처리합니다.
이것을 컴퓨터가 아닌 사용자가 볼 수 있도록 printf("%d", A)를 통해 출력하는 경우 원래 수로 나타내기 위해 다시 2의 보수화를 하여 보여주는 것이죠.
(사람용 음수 -> 2의보수화 -> 컴퓨터용 음수 -> 2의보수화 -> 사람용 음수)
문제3번의 경우 음수(~(not)을 통해 음수화된 비트)를 출력하기 위해 2의 보수화로 처리한 것입니다.
문제24번은 a&b&~b을 처리한 결과 나온 비트는 맨 앞의 부호비트가 '0'이기 때문에 양수입니다.
(컴퓨터 내부에서 처리시에는 굳이 2의보수화가 필요 없습니다. 출력시에만 원래 수로 사람에게 보여주기 위해 2의보수화 처리를 합니다.)
때문에 출력시 굳이 2의 보수화가 필요 없죠.
행복한 하루되세요 :)