在 Java 中,整数如何在位级别内部表示?
我试图理解Java如何在内部存储整数。我知道所有的java原始整数都是有符号的,(除了短的?)。这意味着该数字的字节中可用的位少了一个位。
我的问题是,是所有整数(正数和负数)都存储为二的补码,还是二的补码中只有负数?
我看到规格上写着.但我经常感到困惑。x bit two's complement number
例如:
int x = 15; // Stored as binary as is? 00000000 00000000 00000000 00001111?
int y = -22; // Stored as two complemented value? 11111111 11111111 11111111 11101010
编辑
需要明确的是,x = 15
In binary as is: `00000000 00000000 00000000 00001111'
Two's complement: `11111111 11111111 11111111 11110001`
因此,如果你的答案是数字被存储为二的补码,那么:all
int x = 15; // 11111111 11111111 11111111 11110001
int y = -22 // 11111111 11111111 11111111 11101010
这里的混乱再次是符号说,两者都是负数。可能是我误读了/误解了它?
编辑不确定我的问题是否令人困惑。被迫隔离问题:
我的问题恰恰是:正数是否按原样存储在二进制
中,而负数则存储为二进制补码
?
有人说,所有这些都存储在二的补码中,一个答案说只有负数被存储为二的补码。