使用位运算符,这样做的目的是为了节约内存开销和加快计算效率
关于位运算符的两个例子。
判断一个整数是否是奇数
public class MainDemo {
public static void main(String[] args) {
// 测试
if (isOddNumber5(-7)) {
System.out.println("奇数");
} else {
System.out.println("偶数");
}
}
/**
* 该解法没有考虑到负数
* @param number
* @return
*/
public static Boolean isOddNumber(int number) {
return number % 2 == 1;
}
/**
* 把负数考虑进去
* @param number
* @return
*/
public static Boolean isOddNumber2(int number) {
return number % 2 == 1 || number % 2 == -1;
}
/**
* 逆向思维
* @param number
* @return
*/
public static Boolean isOddNumber3(int number) {
return number % 2 != 0;
}
/**
* 位运算符 移位
* @param number
* @return
*/
public static Boolean isOddNumber4(int number) {
return number >> 1 << 1 != number;
}
/**
* 位运算符 与运算
* @param number
* @return
*/
public static Boolean isOddNumber5(int number) {
return (number & 1) == 1;
}
}
请实现两个整数变量的交换
public static void main(String[] args) {
int a = 3;
int b = 5;
/**
* 添加变量temp
*/
System.out.println(a + " " + b);
int temp = a;
a = b;
b = temp;
System.out.println(a + " " + b);
/**
* 相加
*/
System.out.println(a + " " + b);
a = a + b;
b = a - b;
a = a - b;
System.out.println(a + " " + b);
/**
* 位运算符,一个数据针对另一个数据位异或两次,该数不变
*/
System.out.println(a + " " + b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println(a + " " + b);
/**
* 加法
*/
System.out.println(a + " " + b);
a = (a + b) - (b = a);
System.out.println(a + " " + b);
}