Sogrey / Web-QA

https://sogrey.github.io/Web-QA/
MIT License
6 stars 2 forks source link

如何在不使用`%`模运算符的情况下检查一个数字是否是偶数? #285

Open Sogrey opened 4 years ago

Sogrey commented 4 years ago

我们可以对这个问题使用按位&运算符,&对其操作数进行运算,并将其视为二进制值,然后执行与运算。

function isEven(num) {
  if (num & 1) {
    return false
  } else {
    return true
  }
}

以此类推…

与运算的规则如下:

a b a & b
0 0 0
0 1 0
1 1 1

因此,当我们执行console.log(5&1)这个表达式时,结果为1。首先,&运算符将两个数字都转换为二进制,因此5变为1011变为001

然后,它使用按位怀运算符比较每个位(01)。101&001,从表中可以看出,如果a & b1,所以5&1结果为1

101 & 001
101
001
001