我在C中使用~
运算符。
现在我已分配x = 12
并打印~x
。
但是它给出了-13
作为输出,而输出应该是3
(我想是这样),因为在(12)1100之后-----> 0011(3)(0改为1,反之亦然)。
答案 0 :(得分:1)
你的X是一个变量,它与8位(8,16,32等)对齐。
当您编写x = 12
时,您将x = 1100
(二进制)设置为较低的半字节,但您将所有其他位设置为0
。
当你反转它时,所有其他位也被反转,如果X
是signed
(例如char),你将得到负输出,这是正常的。
//Assume x is char
char x;
x = 12; //00001100;
x = ~x; //11110011;
这就是为什么你在这里得到-13
。