【发布时间】:2018-03-19 10:14:19
【问题描述】:
我正在尝试使用这两种方法以二进制形式打印一个数字:
方法一:
int input;
scanf("%d", &input);
for(int i = sizeof(int)*CHAR_BIT - 1; i >= 0; i--)
printf("%u",(input & (1<<i)) >> i);
方法二:
int input;
scanf("%d", &input);
for(int i = sizeof(int)*CHAR_BIT - 1; i >= 0; i--)
(input & (1<<i)) ? putchar('1') : putchar('0');
方法 2 工作正常,但在方法 1 中打印的第一个“数字”是 4294967295,我找不到错误。
【问题讨论】:
-
使用位时,不要使用有符号类型。
-
1<<31调用未定义的行为。