用C签名的二进制表示形式

时间:2018-07-05 00:51:09

标签: c gcc

在读取this之后,可以像这样在GCC中为二进制写适当的二进制常量:

int foo = 0b1010;

并期望用10打印出printf("%d", foo)

但是,附加了关键字signed(尽管默认情况下对int进行了签名)不会影响GCC对0b1010的解释(应为-6)。为什么会这样,并且可以对二进制常量进行签名?

1 个答案:

答案 0 :(得分:3)

默认情况下,数字常量的类型为int。常量0b1010也是这种类型。

假设系统上的int为4字节,这等效于写入0b00000000000000000000000000001010。假设补码表示为2,则未设置符号位,因此这不是负数。其值为十进制十。

如果您改为给0b11111111111111111111111111111010作为值,则为-6。