我试图理解Java是如何在内部存储整数的。我知道所有的java基本整数都是有符号的(除了short?)。这意味着在一个字节中该数字少了一位可用。
我的问题是,是否所有的整数(正和负)都作为2的补码存储,或者只有负数在2的补码中?
我看到说明书上写着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
数字被存储为2的补码,那么:
int x = 15; // 11111111 11111111 11111111 11110001
int y = -22 // 11111111 11111111 11111111 11101010
这里同样令人困惑的是,标牌上写着,两者都是负数。可能是我读错了/误解了?
编辑不确定我的问题是否令人困惑。被迫隔离问题:
准确地说,我的问题是:正数是否存储在binary as is
two's complement
**?**中,而负数是否存储为
有些人说所有的都存储在二的补码中,一个答案说只有负数才存储为二的补码。
https://stackoverflow.com/questions/13422259
复制相似问题