gpt4 book ai didi

c - 如何在 C 中使用有符号/无符号创建负二进制数?

转载 作者:行者123 更新时间:2023-11-30 18:21:11 24 4
gpt4 key购买 nike

我的想法:如果声明一个int,它基本上会得到一个unsigned int。因此,如果我需要一个负值,我必须显式创建一个有符号 int。

我试过了

int a = 0b10000101;
printf("%d", a); // i get 138 ,what i've expected
signed int b = 0b10000101; // here i expect -10, but i also get 138
printf("%d", b); // also tried %u

那么我错了,二进制的有符号整数是负值吗?
如何创建二进制格式的负值?

编辑 即使我使用 16/32/64 位,我也会得到相同的结果。 unsigned/signed 似乎在不手动移动位的情况下会产生影响。

最佳答案

如果数字表示为二进制补码,则只需设置符号位即可确保该数字为负数。那是MSB。如果 int是32位,那么0b11111111111111111111111111111111-1 ,和0b10000000000000000000000000000000INT_MIN .

调整尺寸int(8|16|64)_t ,只需更改位数即可。符号位仍然是MSB。

关于c - 如何在 C 中使用有符号/无符号创建负二进制数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54489652/

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