【发布时间】:2017-05-07 11:30:01
【问题描述】:
我正在关注本教程:https://www.tutorialspoint.com/cprogramming/c_bitwise_operators.htm https://www.tutorialspoint.com/cprogramming/c_operators.htm
我很困惑 A 的开头是:A = 0011 1100(十进制中的 60)在使用 ~ 运算符翻转所有位时如何变为 -61。
我知道~A 将变为:1100 0011。根据我的计算,这个二进制数 1100 0011 等于十进制的 195。然而,根据 c 编程语言和教程,答案是十进制的 -61。
有人可以帮我理解吗?
感谢您阅读此问题。
【问题讨论】:
-
195-256 = -61: 8 位类型的补码
-
请显示您正在运行的确切代码,以便我们可以尝试重现问题而不是猜测。
-
这应该不足为奇,因为(根据定义)
-x = ~x + 1和~x = -x - 1 -
@merlin2011 我正在尝试手动执行此操作。代码在上面的链接之一中。我在 IDE 中编写并编译了它。然后运行它,结果是-61。
标签: bit-manipulation bit