使用位運算符,這樣做的目的是為了節約內存開銷和加快計算效率
關于位運算符的兩個例子。
判斷一個整數是否是奇數
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);
}