【发布时间】:2013-08-25 13:28:53
【问题描述】:
我对移位后的否定操作感到困惑。 例如:
-(1<<7) is 0xffffff80
但为什么最高有效位用 1 填充?
我对- 操作在这里的含义感到困惑。
编辑 1:我使用 printf("%#08x\n", -(1<<7)) 打印出值。
【问题讨论】:
-
因为您的平台使用 2 的补码表示负数...
-
维基百科link补码。
-
这不是只是大约 2 的补码。还需要讨论符号位和旋转来回答这个问题。
-
@JackCColeman:但它大约是 2 的补码。符号位都是关于 2 的补码,这里没有旋转......
-
@Cornstalks,抱歉左移,不是旋转。
标签: c