当最高位是无符号位,1111_1111是表示255
当最高位是符号位,1111_1111的首位表示负数,负数的二进制转十进制,先取反1000_0000再加1为1000_0001,即-1
在java中,对于一个队列序号取中值,m = (i+j)/2,可能会有问题,若i+j数值超过了int的最大值(interger.MAX_VALUE),则当超过java中最大正整数能表示的范围则需要把首位看成符号位导致最终相加结果为负数
同一个二进制数
1011 1111 1111 1111 1111 1111 1111 1110
不把最高位视为符号位,代表3221225470。把最高位视为符号位,代表-1073741826
为了解决这个问题,使用无符号右移运算符代替,(右移一位除以二,左移一位乘以二),
原来
两组二进制数相同但十进制数不同,
右移后
则可以在最大整数范围内表示