运算符>>和>>>比较

“有符号”右移位运算符(>>)将运算符左边的运算对象向右移动运算符右侧指定的位数。

“有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。

Java 也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0。这一运算符是C 或C++没有的。

比如-15 的二进制是11111111111111111111111111110001 进行运算-15>>>2后变成00111111111111111111111111111100而进行-15>>2则变成11111111111111111111111111111100,如果正数则两个运算是一样的。

总结:>>和 >>>都是右移位运算符,操作正整数时都是高位插0,操作负整数时>>高位插1,>>>高位插0。

拓展:如何把一个数转成二进制?

使用Integer.toBinaryString(int)

你可能感兴趣的:(运算符>>和>>>比较)