美文网首页
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