asdfqwerty0123
대표칭호 없음
이해도 | 기타 |
---|
문제: NOT (~) 연산자를 사용하여 입력받은 값을 반전시켜라. 단, 부호 비트는 반전되면 안됨.
#include <stdio.h>
int main() {
unsigned char input;
scanf("%hhu", &input);
printf("%d ", input & 6);
printf("%d ", input | 6);
printf("%d ", input ^ 6);
printf("%d ", ~input);
return 0;
}
> 3
2 7 5 -4
예제에는-4 부분이 252라고 되어있는데 NOT 연산자로 부호 비트를 반전시키지 않는 것이 가능한가요?
0xIII
2020.01.283 (10)을 인버트하면 1111 1100 (2)입니다.
근데 문제는 이 2진수를 어떻게 바라보느냐죠.
질문자님께서는 8행 printf("%d ", ~input); 부분
출력 포맷 형식을 부호 있는 일반 정수(%d)로 입력하셨으므로 1111 1100 (2)의 최상위 비트는 부호비트가 되어
부호화 2의 보수법으로 -4가 출력됩니다.
252 (10)으로 출력을 원하시면 부호 없는 1바이트 정수(%hhu) 형식으로 printf("%hhu ", ~input);로 변경해주시면 됩니다.
asdfqwerty0123
2020.01.28오옹 감사합니다