“&”如何与奇数和偶数相关?在JS中

How does '&' work in relation to odd and even? In JS

我的任务是弄清楚如何确定奇数和偶数。我无法使用 %。我使用 & 是因为我在互联网上找到了它,但我找不到适合它的工作方式。

N/A

我创建的示例是

`
    if ((22 & 1) === 0) { 
        return true;
    } else{
        return false;
    }`

Returns 真

& 按位运算符的工作方式如下:

var isOdd = number & 1;
var isEven = !(number & 1);

(22 & 1) === 0 为真,所以这告诉您它是偶数,因为如果数字是偶数,number & 1 等于 0,如果数字是奇数,则 1

在二进制表示法中,right-most 位是个位:

0 = 0000
1 = 0001
2 = 0010
3 = 0011
4 = 0100
5 = 0101
6 = 0110
...etc

正如您所见,每个奇数都以 1 结尾,每个偶数都以 0 结尾。

当您使用 & 时,您正在进行 bit-wise 和计算。当您执行 X & 1 时,您是将 X 的每一位与 1 还是二进制进行比较:00001(您可以继续向左扩展零)并测试两者位是 1.

因此,例如 22 在二进制中是 10110 22 & 1 查看每一位并测试两者是否为真:

1 0 1 1 0
0 0 0 0 1 < no bits are 1 in both number
---------
0 0 0 0 0 < all zeros == 0  so 22 is even

23 是 10111:

1 0 1 1 1
0 0 0 0 1  the last bit is one in both numbers
---------
0 0 0 0 1 < 1 so 23 is odd

由于最后一位在奇数中始终为 1 x & 1 对于奇数始终为 1,对于偶数始终为 0。

function isEven(number) {
  return (number & 1) == 0;
}
const userInput = 4;
console.log(isEven(userInput) == true ? "Even" : "Odd");