Open Sogrey opened 4 years ago
我们可以对这个问题使用按位&运算符,&对其操作数进行运算,并将其视为二进制值,然后执行与运算。
&
function isEven(num) { if (num & 1) { return false } else { return true } }
0
000
1
001
2
010
3
011
4
100
5
101
6
110
7
111
以此类推…
与运算的规则如下:
因此,当我们执行console.log(5&1)这个表达式时,结果为1。首先,&运算符将两个数字都转换为二进制,因此5变为101,1变为001。
console.log(5&1)
然后,它使用按位怀运算符比较每个位(0和1)。101&001,从表中可以看出,如果a & b为1,所以5&1结果为1。
101&001
a & b
5&1
1&0
0&0
1&1
console.log(4 & 1)
0 & 1
function isEven(num) { if (num < 0 || num === 1) return false; if (num == 0) return true; return isEven(num - 2); }
我们可以对这个问题使用按位
&
运算符,&
对其操作数进行运算,并将其视为二进制值,然后执行与运算。0
二进制数是000
1
二进制数是001
2
二进制数是010
3
二进制数是011
4
二进制数是100
5
二进制数是101
6
二进制数是110
7
二进制数是111
以此类推…
与运算的规则如下:
因此,当我们执行
console.log(5&1)
这个表达式时,结果为1
。首先,&
运算符将两个数字都转换为二进制,因此5
变为101
,1
变为001
。然后,它使用按位怀运算符比较每个位(
0
和1
)。101&001
,从表中可以看出,如果a & b
为1
,所以5&1
结果为1
。1&0
,结果是0
。0&0
,结果是0
。1&1
,结果是1
。001
,对应的十进制数,即1
。 由此我们也可以算出console.log(4 & 1)
结果为0
。知道4
的最后一位是0
,而0 & 1
将是0
。如果你很难理解这一点,我们可以使用递归函数来解决此问题。