gpt4 book ai didi

c - 如何通过位移位将无符号整数转换为负数?

转载 作者:行者123 更新时间:2023-11-30 16:53:22 25 4
gpt4 key购买 nike

为什么执行此操作时会得到负数?

unsigned int a = 1 << 31;
printf("%d",a);

我已经检查过我的计算机上整数的大小,它是 4 字节。所以我的整数由 32 位组成,向左移动 31 次,我应该得到最高有效位。这意味着它应该是正数,但我总是得到负数。

我得到的:-2147483648

我的预期:一些正数(可能是 1073741824)

我在这里缺少什么?

最佳答案

问题不在于你的位移。您只是没有以相应的格式打印。

%d 或 %i 用于打印 int,因此当您尝试打印 unsigned int 时,它会被转换为有符号 int。

请参见此处:What is the format specifier for unsigned short int?

https://www.le.ac.uk/users/rjm1/cotter/page_30.htm

关于c - 如何通过位移位将无符号整数转换为负数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40870346/

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