每日一题(四六)如何在不使用 % 模运算符的情况下检查一个数字是否是偶数

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

答案:

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);
}

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值