public static void main(String[] args)
{
int a = 8;
int b = 90;
int id1 = (b - a) >>> 31;
System.out.println(id1); // 1
}
int类型32位,正数的第一位为0,负数的第一位为1,所以把一个正数右移31位就可以判断这个数的正负。
另注:>>和>>>的区别
右移运算符>>(有符号)
用来将一个数的各二进制位全部右移若干位.例如:a = a>>2,使a的各二进制位右移两位,移到右端的低位被舍弃,最高位则移入原来高位的值.
如:a = 00110111,则a>>2=00001101,b=11010011,则b>>2 = 11110100
右移一位相当于除2 取商,而且用右移实现除法比除法运算速度要快
无符号右移运算符>>>
用来将一个数的各二进制位无符号右移若干位,与运算符>>相同,移出的低位被舍弃,但不同的是最高位补0,如a = 00110111,则a>>>2 = 00001101,b=11010011,则b>>>2 = 00110100