gpt4 book ai didi

c - 为什么1的补码不合适?

转载 作者:行者123 更新时间:2023-11-30 19:09:46 25 4
gpt4 key购买 nike

我在 C 中使用 ~ 运算符。

现在我分配了x = 12并打印~x

但是它给出 -13 作为输出,而输出应该是 3 (我认为是这样),因为在 (12)1100 -----> 0011(3 )(0 变为 1,反之亦然)。

你们能给我解释一下吗?我听不懂。

最佳答案

你的 X 是一些与 8 位(8、16、32 等)对齐的变量。

当您写入x = 12时,您将x = 1100(二进制)设置为低半字节,但将所有其他位设置为0。当您反转它时,所有其他位也会反转,如果您的 Xsigned (例如 char),您将得到负输出,这是可以的。

//Assume x is char
char x;
x = 12; //00001100;
x = ~x; //11110011;

这就是为什么你在这里得到-13

关于c - 为什么1的补码不合适?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42592689/

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