如何在不使用 % 模运算符的情况下检查一个数字是否是偶数
答案:
1.可以对这个问题使用按位 & 运算符,& 对其操作数进行运算,将其视为二进制值,然后执行与运算。
function isEven(num){
if(num & 1){
return false;
}else{
return true;
}
}
0 二进制是 00000000
1 二进制是 00000001
2 二进制是 00000010
3 二进制是 00000011
4 二进制是 00000100
5 二进制是 00000101
6 二进制是 00000110
7 二进制是 00000111
...以此类推...
栗子:console.log(5 & 1);//1
第一步:首先,& 运算符将两个数字都转化为二进制,5 => 101 , 1 => 001。所以比较变为: 101 & 001
第二步:然后,它使用按位与运算符比较每个位( 0 和 1 ):
- 首先比较最左边的 1 & 0 = > 0
- 然后比较中间的 0 & 0 = > 0
- 然后比较最后边的 1 & 1 = > 1
最后得到一个二进制数 001 对应十进制数,即 1。所以可以判断 5 位奇数。
2.还可以使用递归方式:
function isEven(num){
if(num<0 || num ===1){
return false;
}
if(num === 0){
return true;
}
return isEven(num-2);
}