0x7fffffff 表示 int的最大值
0x表示是16进制
7 表示二进制 0111
F 表示二进制 1111
0x7FFFFFFF 就表示 是一个十六进制的int的最大值
也可以表示为二进制的 0111 1111 1111 1111 1111 1111 1111 1111
这是最大的整型数 int(因为第一位是符号位,0 表示他是正数)
每个十六进制数占4个bit(毕竟16进制最大值是15嘛),一个字节占8位。因此0x7ffffff应该理解为:
0x7f ff ff ff ff,也就是占4个字节,也就是一个int类型。
用 INT_MAX 常量可以替代这个值。
int的范围是“-231”到“231-1”
至于这里为什么是2^31-1 ,这里减一的原因是大家回想一下二进制转十进制的转法中:二进制1111转成十进制23+22+21+20 = 15 如果你直接用24得出的数是16(这里的意思是可以有16个数),然而1111最大能表达的十进制整数是15,所以24-1=15,也就说最大的整数是15。所以2^31-1这里是可以表示的最大整数了!
也就是“-2147483648”到“2147483647”;
关于int的范围是“-231”到“231-1”; 可以看看这篇https://blog.csdn.net/shihengli2010/article/details/51821827
与计算
例如: -1 & 0x7fffffff
计算
0111 1111 1111 1111 1111 1111 1111 1111 0x7fffffff
1000 0000 0000 0000 0000 0000 0000 0001 -1
等于
0000 0000 0000 0000 0000 0000 0000 0001 1