如果我有一个字节值00101011
并且我想将其表示为int值,我有:00000000000000000000000000101011
,对我来说似乎很清楚。我有字节值11010100
的问题,其中int由11111111111111111111111111010100
表示。我不知道它来自哪里。有人可以向我解释扩展字节值到int的想法吗?
答案 0 :(得分:8)
byte
值11010100
表示负数(-44
),因为设置了最高有效位。当这经历了原始的加宽转换时,它仍然必须在两个补码表示中表示相同的负值。这是使用符号扩展完成的。这意味着所有新位都与原始符号位相同。
11010100 => -44
11111111 11111111 11111111 11010100 => -44
如果没有发生这种情况,那么符号位将不再是符号位,并且它将被解释为"通常",并且该值将不再相同。
00000000 00000000 00000000 11010100 => 212