[英]Signed binary representation in C
看完这个 ,二进制常量可以写成地方二进制在GCC像这样:
int foo = 0b1010;
并且期望用printf("%d", foo)
打印出10
printf("%d", foo)
。
但是,使用关键字signed
附加(尽管int
默认签名),不会影响GCC对0b1010的解释(应为-6
)。 为什么会这样,是否可以签署二进制常量?
默认情况下,数字常量的类型为int
。 常数0b1010
也属于这种类型。
假设int
是系统上的4个字节,这相当于写入0b00000000000000000000000000001010
。 假设2的恭维表示,则不设置符号位,因此这不是负数。 其值为十进制10。
如果您改为将0b11111111111111111111111111111010
作为值, 0b11111111111111111111111111111010
-6。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.