作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 C 中使用 ~
运算符。
现在我分配了x = 12
并打印~x
。
但是它给出 -13
作为输出,而输出应该是 3
(我认为是这样),因为在 (12)1100 -----> 0011(3 )(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
。
关于c - 为什么1的补码不合适?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42592689/
我是一名优秀的程序员,十分优秀!