【发布时间】:2014-05-03 18:49:03
【问题描述】:
如果我有一个字节值00101011,并且我想将它表示为我拥有的 int 值:00000000000000000000000000101011,那么我似乎很清楚。但是我对字节值11010100 有问题,它作为int 由11111111111111111111111111010100 表示。我不知道它是从哪里来的。有人可以解释一下将字节值扩展为 int 的想法吗?
【问题讨论】:
如果我有一个字节值00101011,并且我想将它表示为我拥有的 int 值:00000000000000000000000000101011,那么我似乎很清楚。但是我对字节值11010100 有问题,它作为int 由11111111111111111111111111010100 表示。我不知道它是从哪里来的。有人可以解释一下将字节值扩展为 int 的想法吗?
【问题讨论】:
byte 值 11010100 表示负数 (-44),因为设置了最高有效位。当它经历原始扩展转换时,它必须仍然在二进制补码表示中表示相同的负值。这是使用符号扩展完成的。这意味着所有新位都与原始符号位相同。
11010100 => -44
11111111 11111111 11111111 11010100 => -44
如果没有发生这种情况,那么符号位将不再是符号位,它将被“正常”解释,并且值将不再相同。
00000000 00000000 00000000 11010100 => 212
【讨论】:
11010100 等于-44?抱歉这个愚蠢的问题。