美文网首页
Java位运算符使用技巧

Java位运算符使用技巧

作者: 爪哇驿站 | 来源:发表于2021-01-14 18:38 被阅读0次
一、判断奇偶数
//偶数
a & 1 = 0  
//奇数
a & 1 = 1 

我们可以利用 & 运算符的特性,来判断二进制数第一位是0还是1。
用if ((a & 1) == 0) 代替 if (a % 2 == 0)来判断a是不是偶数。

二、交换两个数
  • 临时变量法:
int temp = a;
a = b;
b = temp;
  • 使用 ^ 位运算符:
a ^= b;
b ^= a;
a ^= b;

需要了解一下 ^ 的几个特性:
a ^ a = 0
a ^ 0 = a
(a ^ b) ^ c = a ^ (b ^ c)
从数学角度来分析:
第一步:a = a ^ b
第二步:b = a ^ b = (a ^ b) ^ b = a ^ (b ^ b) = a ^ 0 = a
第三步:a = a ^ b = (a ^ b) ^ b = (a ^ a) ^ b = b ^ 0 = b

三、取余

其实取余算法和上面的判断奇偶数原理是一样的。
比如说我们要让a对16进行取余,那么就可以让 a & 15 得出来的结果就是余数。
可以看出15的二进制表示为:
0000 0000 0000 0000 0000 0000 0000 1111
所以 a & 15 返回值就是a二进制的最低四位,也就是

a & 15 = a % 16

使用 & 来进行取余的算法比使用 % 效率高很多,虽然只能对2^n的数值进行取余计算,但是在JDK源码中也是经常被使用到,比如说HashMap中判断key在Hash桶中的位置。

相关文章

网友评论

      本文标题:Java位运算符使用技巧

      本文链接:https://www.haomeiwen.com/subject/ojivaktx.html