檢查一個數字是奇數還是偶數
瀏覽人數:306最近更新:
一、概述
正如我們所知,一個數的奇偶性取決於它除以 2 的餘數。偶數產生餘數 0,而奇數產生餘數 1。
在本教程中,我們將看到在 Java 中檢查數字是偶數還是奇數的多種方法。
2.劃分方法
返回除法餘數的算術運算符是模運算符%
。
我們可以驗證一個數字是偶數還是奇數的最簡單方法是通過將數字除以 2 並檢查餘數的數學運算:
boolean isEven(int x) {
return x % 2 == 0;
}
boolean isOdd(int x) {
return x % 2 == 1;
}
讓我們編寫幾個測試來確認我們方法的行為:
assertEquals(true, isEven(2));
assertEquals(true, isOdd(3));
3.按位運算方法
我們可以對一個數字進行多種按位運算來確定它是偶數還是奇數。
按位運算**比確定數字奇偶性的其他方法**更有效。
3.1。按位OR
(|)
偶數OR
1 將始終將數字增加 1 。
奇數OR
1 將始終產生**相同的數字**:
boolean isOrEven(int x) {
return (x | 1) > x;
}
boolean isOrOdd(int x) {
return (x | 1) == x;
}
讓我們通過一些測試來演示我們的代碼的行為:
assertEquals(true, isOrEven(4));
assertEquals(true, isOrOdd(5));
3.2.按位AND
( &
)
偶數AND
1 總是導致 0 。另一方面,奇數AND
1**結果為 1** :
boolean isAndEven(int x) {
return (x & 1) == 0;
}
boolean isAndOdd(int x) {
return (x & 1) == 1;
}
我們將通過一個小測試來確認這種行為:
assertEquals(true, isAndEven(6));
assertEquals(true, isAndOdd(7));
3.3.按位XOR
( ^
)
按位XOR
檢查數字奇偶性的**最佳解決方案**。
偶數XOR
1 始終**將數字增加 1,而**n 奇數XOR
1 始終**將其減少 1** :
boolean isXorEven(int x) {
return (x ^ 1) > x;
}
boolean isXorOdd(int x) {
return (x ^ 1) < x;
}
讓我們編寫一些小測試來檢查我們的代碼:
assertEquals(true, isXorEven(8));
assertEquals(true, isXorOdd(9));
4. 最低有效位 (LSB)
我們提出的最後一種方法是讀取數字的最低有效位。
偶數的最低有效位**始終為 0,而奇數的最低有效位始終為 1:**
boolean isLsbEven(int x) {
return Integer.toBinaryString(x).endsWith("0");
}
boolean isLsbOdd(int x) {
return Integer.toBinaryString(x).endsWith("1");
}
我們將用幾行代碼來演示這種行為:
assertEquals(true, isLsbEven(10));
assertEquals(true, isLsbOdd(11));
5. 結論
在本文中,我們學習了多種方法來檢查一個數字的奇偶性,即,它是偶數還是奇數。我們看到檢查奇偶校驗的最佳解決方案是按位XOR
運算。
與往常一樣,示例的源代碼可在 GitHub 上獲得。
本作品係原創或者翻譯,採用《署名-非商業性使用-禁止演繹4.0國際》許可協議