一、概述
正如我们所知,一个数的奇偶性取决于它除以 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
运算。
0 评论