背景
位运算在实际工作中可能会较少被重视,但是在有些情况下位运算会带来性能的极大提升,值得我们深入了解。同时,位运算相关的算法也是面试中的高频题。
奇偶判断
一个奇数用二进制表示时,最低位一定是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);
}
网友评论