【发布时间】:2026-01-07 19:10:02
【问题描述】:
我试图了解 Java 如何在内部存储整数。我知道所有java原始整数都是有符号的(除了short?)。这意味着该数字在一个字节中可用的位数减少了。
我的问题是,所有整数(正数和负数)都存储为二进制补码还是仅是二进制补码中的负数?
我看到规格上写着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?
有人说所有都存储在二进制补码中,一个答案说只有负数存储为二进制补码。
【问题讨论】:
标签: java memory binary store twos-complement