如果我有一个字节值00101011,并且想将其表示为int值,则有:00000000000000000000000000101011,这对我来说似乎很清楚。 Bu我对字节值11010100有问题,该字节值由11111111111111111111111111010100表示为int。我不知道它从哪里来。有人可以向我解释将字节扩展为int的想法吗?

最佳答案

byte11010100表示一个负数(-44),因为已设置了最高有效位。当它经历原始的加宽转换时,它仍必须在两者的补码表示中表示相同的负值。这是使用符号扩展名完成的。这意味着所有新位都与原始符号位相同。

                           11010100 => -44
11111111 11111111 11111111 11010100 => -44


如果这没有发生,则符号位将不再是符号位,并且将被“正常”解释,并且值将不再相同。

00000000 00000000 00000000 11010100 => 212

10-05 22:19