位移运算符案例
优点:比一般的运算快很多
// 要计算的整数例子
int integerNumber = 10;
// 注意,位移运算符的对象只能是整数,结果当然也是整数
// 将这个整数左移一位 可以得到这个数翻倍的结果 这里的 1 就是要移动的结果
System.out.println(integerNumber << 1);
// 左移两位 数值翻两倍
System.out.println(integerNumber << 2);
// 右移一位,缩小一半 想缩小四分之一把 1 换成 2就可以
System.out.println(integerNumber >> 1);
//无符号右移一位 缩小一半,正数会得到对应的结果,负数的话结果会变为正数
System.out.println(integerNumber >>> 1);
对应结果
20
40
5
5
反过来当为负数时结果为
-20
-40
-5
2147483643
若要赋值运算可以这样写,其实和 + - * / 是一样的
int x = 50 ;
x <<= 1;
// 其实效果就是下面这样 结果为x翻一倍的值
x = x << 1
// 与一般的运算可以一样理解 例如:
x += 2
x *= 2
// 也就是
x = x + 2
x = x * 2
需要注意的是位移运算符的运算优先级并不比 + - 高,所以会出现如下结果
System.out.println(10 + 16 >> 1);
System.out.println(10 + (16 >> 1));
结果如下:
13
18