在 Java 中,使用位运算的效率是比算数运算要快很多,在编写代码时,很多常见的算数运算可以使用位运算代替。
例如:
-
使用 (i + j) >>> 1 代替 (i + j) % 2 ;
-
当求 x = m % n 时(n 不为0,并且 n = 2 ^ k ,k > 0),可以使用 x = m & (2^k - 1) 代替 ;
-
当求 x = m / n 时(n 不为0,并且 n = 2 ^ k ,k > 0),可以使用 x = m >>> k 代替 ;
说明:
1、(i + j) >>> 1 代替 (i + j) % 2 记住即可。
2【3】、查看下面规律就可以理解了
/**
* 89627 / 16 = 5601......11
* 其中 89627,6501、11 的二进制代码如下
*
* 0001 0101 1110 0001 1011 【89627】
* 0001 0101 1110 0001 【5601】
* 1011 【11】
*
*
*
* 635 / 4 = 158......3
* 其中 635、158 和 3 的二进制格式如下
*
* 0010 0111 1011 【635】
* 0010 0111 10 【158】
* 0011 【3】
*/