- class MoveTest
- {
- public static void main(String[] args){
- byte b = -15;
- // b>>>=2;
- System.out.println(b>>>2);
- }
- }
复制代码 你如果按上面这个方法输出的结果就是一个正数1073741820
b>>>=2此运算的效果基本上与指定 b= >>> 2 相同,不同的只是仅计算一次 b,,,,所以负数还是负数
>>>= 运算符将 b 的所有位右移 expression 指定的位数。用零填充右移后左边空出的位。右移的位被丢弃。该操作符屏蔽 expression 以避免将 result 移位太多。否则,如果移位量超出 result 的数据类型中的位数,则可能会移走所有的初始位,从而会提供无意义的结果。为了确保每次移位保留至少一个初始位,移位运算符将使用以下公式来计算实际移位量:使用 result 中的位数减一所得的结果来屏蔽 expression(使用按位“与”运算符)。
|