整形取值范围的计算方式
整形 | 字节 | 取值范围 | 计算方式 |
---|---|---|---|
byte | 1字节 | - 128 ~ 127 | - 2^7 ~ 2^7 - 1 |
short | 2字节 | - 32 768 ~ 32 767 | - 2^15 ~ 2^15 -1 |
int | 4字节 | - 2 147 483 648 ~ 2 147 483 647 | - 2^31 ~ 2^31 -1 |
long | 8字节 | - 9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807 | -2^63 ~ 2^63 -1 |
以上都是有符号整数。(注意:Java无没有符号的整形)
在计算机中,有符号整数在用二进制表示时,最高位符号为0代表是正数、1代表是负数,并且负数是以补码的形式存储的,就是将其原码除符号位外的所有位取反后加1。
比如byte整形,1个字节,8个0或者1组成,数量为2^8 = 256
最高位为0111 1111 也就是2^7 - 1 127
最低位为补码,即1000 0000 也就是 2^7 -128
所有byte的取值范围为 -128 ----- 127.
为什么最高位不是256呢?
因为最高位代表正数、负数,后七位代表数值