“有符号”右移位运算符(>>)将运算符左边的运算对象向右移动运算符右侧指定的位数。
“有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。
Java 也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0。这一运算符是C 或C++没有的。
比如-15 的二进制是11111111111111111111111111110001 进行运算-15>>>2后变成00111111111111111111111111111100而进行-15>>2则变成11111111111111111111111111111100,如果正数则两个运算是一样的。
总结:>>和 >>>都是右移位运算符,操作正整数时都是高位插0,操作负整数时>>高位插1,>>>高位插0。
拓展:如何把一个数转成二进制?
使用Integer.toBinaryString(int)