在Java语言中,使用补码的形式来表示数字。补码是计算机表示数字的一种规则或者是表示形式,它的算法很简单:用最左边的一个二进制位表示数字的正负,0表示正数,用1表示负数,专业上把表示符号的这个二进制位叫做“符号位”。符号位后面剩余的二进制位表示数字本身。
对于正数而言,直接用剩余二进制位表示这个数字就可以了。例如一个数字42,如果存储为int类型,那么这个数字在内存中会占据32位,在最左边一位上的0表示这是一个正数,用剩余的31位来表示42这个数字本身就可以了,如图8-8所示。
图8-8 补码表示int型数据42
从图8-8可以看出:符号位连同后面表示数字本身的二进制数总共是32位,恰好是Java语言中int类型数据的长度。对于其他类型,最左边依然是符号位,数字的表示规则也相同,只不过右边表示数字的二进制位的位数发生了变化而已。比如long类型的数据,右边表示数字的二进制位是63位,再加上符号位,总共是64位,恰好是8个字节。