在实际 开发中,其实很少 使用 移位运算。
特别是 还用 移位运算 实现 高性能的 乘法与除法。
虽然知道,但是还是有点蒙,或者说 不知道应该怎么用
除法 >>
int a = 10;
int c = a >> 1;
System.out.println("c:" + c);
// 向低位移动一位,相当于 除以 2的 1次方
System.out.println(a >>= 1); //写法 和 a>>1 是一样的
结果都是 5
看移位的值了 ,比如 a >>2 也就是 将 a 除2 再 除2 , 也就是 a 除以4 的商。 也就是 2的 2次方。
同理 乘法也是差不多
乘法 <<
a<<=1;// 向高位移动一位,相当于乘以 2 的1次方
使用
比如说 求 a/2 的 商
或者说是 乘数或者除数 是固定值
总结
其实没必要使用,因为比较难看,而且难理解。因为 就算不适用移位运算, 使用 普通简单的乘除。
最终 编译器也会对代码进行优化的。不需要担心性能问题。
参考