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

时间:2019-07-14 00:52:38

标签: javascript bitwise-operators

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

不适用

我创建的样本是

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

返回true

3 个答案:

答案 0 :(得分:1)

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

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

(22 & 1) === 0是正确的,因此可以告诉您它是偶数,因为如果数字为偶数,number & 1等于0,如果数字为奇数,则等于1

答案 1 :(得分:1)

以二进制表示法,最右边的位是那个位置:

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

因此您可以看到,每个奇数都以1结尾,每个偶数都以0结尾。

使用&时,您需要按位进行计算。当您执行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,对于偶数始终为零。

答案 2 :(得分:0)

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