0x7fffffff 是十六进制 转化为2进制为 7个1 十进制的话 即2的31 次方减去一(整形的最大值)
o 开头的表示八进制
ox 表示16进制
int 4字节 1字节表示8bit (即8个二进制位) 所以int表示的最大长度就是 32位全为1 即 1*2^0+1*2^1....
所以就是32个空位
0000 0000 0000 0000 0000 0000 0000 0000
由于第一位是符号位 111 1111 1111 1111 1111 1111 1111 1111
即 1*2^0+.....+1*2^30
由于 1*2^30 即 1000000000000000000000000000000 (30个0)
而 1*2^29即 100000000000000000000000000000
。
。
所以这些相加之后为 111 1111 1111 1111 1111 1111 1111 1111
就差一个1就变成 1000 0000 0000 0000 0000 0000 0000 0000 也就是1*2^31
所以相加值就为 1*2^31-1了
以下是参考
int占4个字节,即表示int类型的存储大小为4个字节。
如果转成十进制来说就是“-2147483648 ~2147483647”
即:int只能存放这么大的数字。。。超出范围则溢出。。。
再来说byte
byte最大能够存放 -128~127 的数值。
那为什么是 -128~127
这个跟字节编码有关
首先知道byte是一个字节保存的,有8个位,也就是8个0、1。
8个位的第一个位是符号位,
也就是说0000 0001代表的是数字1
1000 0000代表的就是-1
所以正数最大位0111 1111,也就是数字127
负数最大为1111 1111,也就是数字-128
Integer.MAX_VALUE = ox7FFFFFFF 是因为 一个F表示 四个1111 所以 7个F 就是 28个1 28个1 还缺4个1 也就是7了。