hhh

byte 取值范围

Java 中,byte 占一个字节,取值范围为何是 -128~127?(-2^7~2^7-1)

计算机是用二进制来表示数据的,一个字节也就是 8 个比特位,其中最高位表示符号位(0 正 1 负)。

故 byte 的取值范围为 1000 00000111 1111

在 Java 中,是采用补码来表示数据的。

正数的补码和原码相同,负数的补码是在原码的基础上各位取反然后加 1。

1000 000 是补码,减一然后按位取反得到其原码 1000 0000。(减一得 0111 1111,再按位取反得 1000 0000)

因为是负数,所以最小的 byte 值为 -2^7=-128

0111 1111 的十进制为 2^7-1=127(等比序列求和)。

byte 是一个字节,共有 2^8=256 种可能性,也就是 -128~127。

其他基本数据类型同理:

char 没有负值,占两个字节,所以取值范围是 0~2^16-1(65535)