为什么1的补码不合适?

时间:2017-03-04 05:57:36

标签: c

我在C中使用~运算符。

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

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

你能解释一下这个吗?我无法理解。

1 个答案:

答案 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

相关问题