=-6ren">
gpt4 book ai didi

c - 十进制转二进制错误输出

转载 作者:太空宇宙 更新时间:2023-11-04 07:57:00 26 4
gpt4 key购买 nike

我正在尝试使用这两种方法打印二进制数字:

方法一:

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,我找不到错误。

最佳答案

使用有符号数进行位移是没有意义的。当您将数据移入 int 的符号位时,您会调用未定义的行为。另请注意,1 文字的类型为 int

通过使用无符号类型解决这个问题,同时摆脱原始的 C 类型,支持 stdint.h。

uint32_t input = 0x88776655;

for(uint32_t i=0; i<32; i++)
{
printf("%u", (input & (1u<<31-i)) >> 31-i);
}

关于c - 十进制转二进制错误输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49360402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com