我们可以对这个问题使用按位&运算符,&对其操作数进行运算,并将其视为二进制值,然后执 行与运算。
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&l)这个表达式时,结果为1。首先,&运算符将两个数字都 转换为二进制,因此5变为101, 1变为001。
然后,它使用按位怀运算符比较每个位(0和1) 。101&001,从表中可以看出,如果a&b
为1,所以5&1结果为l。
101 & 001
101
001
001
1、 首先我们比较最左边的1&0,结果是0。
2、 然后我们比较中间的0&0,结果是0。
3、 然后我们比较最后1&1,结果是1。
4、 最后,得到一个二进制数001,对应的十进制数,即1。
由此我们也可以算出console. log(4 & 1)结果为0。知道4的最后一位是0,而0 & 1将是 0。如果你很难理解这一点,我们可以使用递归函数来解决此问题。
function isEven(num) {
if (num < 0 || num = 1) return false;
if (num = 0) return true;
return isEven(num – 2);
}
Was this helpful?
0 / 0