我试图了解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
这里的混乱再次是符号说的,都是负数。可能是我误读/误解了吗?
编辑 不确定我的问题是否令人困惑。被迫隔离问题:
我的问题恰恰是:正数存储为binary as is
,负数存储为two's complement
吗?
有人说全部都存储在二进制补码中,一个回答说只有负数被存储为二进制补码。