位运算使用小技巧

背景

  位运算在实际工作中可能会较少被重视,但是在有些情况下位运算会带来性能的极大提升,值得我们深入了解。同时,位运算相关的算法也是面试中的高频题。

奇偶判断

  一个奇数用二进制表示时,最低位一定是1,将其与1进行与运算,判断得数是否为0。

public static boolean isOdd(int num) {
        return (num&1)==1;
}

判断一个数是否是2的幂

  

public static boolean isPowerTwo(int num) {
        return (num&(num-1)) == 0;
}

求相反数

  

public static int getOppositeNumber(int a) {
        return (~a)+1;
}

交换两个数

public static void changeNum(int a, int b) {
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
    }

两数求和

  直接两数相加,可能会溢出。采用位运算的方法可以避免。

public static int sum(int a, int b) {
    return (a&b) + ((a^b) >> 1);
}

求2的n次方

  

public static int pow(int pow) {
    return (pow << 2);
}

你可能感兴趣的:(位运算使用小技巧)