让我说我在32位机器上工作。参考作为符号位的MSB(最高有效位),我的问题是它如何代表这种结构。
我的理解是每个字节都有一个符号值。因此,如果是这种情况,那么将有四个有符号位。我在这里纠正或遗漏了什么。谢谢!
答案 0 :(得分:5)
字节是位组。它们没有任何固有的含义,也没有构成它们的位。仅在您举例时给出含义。 选择将这四个字节解释为有符号整数,然后这些位意味着它们的意思,因为平台设计者这么说。
在几乎所有流行的体系结构中,整数都使用two's complement表示。这意味着:
答案 1 :(得分:3)
C中整数的具体表示是未由标准指定。但是,实际上,大多数(几乎所有?)机器都会使用two's complement表示负数。二进制补码没有符号位,本身,但整数的最高有效位对于负数为1,对于非负数为0,
答案 2 :(得分:0)
在大多数架构上,你的32位有符号整数存储在two's complement中:只有一个“符号位”(严格来说并不是真的)。
答案 3 :(得分:0)
如果你正在使用有符号整数,那么编译器会将字节组视为整数,并且该组有一个符号位。在C语言中:当你使用int16_t
时,两个字节有一个符号位。对于int32_t
,四个字节有一个。对于signed char
,每个带符号的char(= byte)都有一个符号位。