C语言算法小技巧——2的幂判定

若一个数是2的幂数

那么二进制表示一定是

10000…

如:

4         100

8         1000

16        10000

32        100000

64        1000000

……

那么这么数减去1一定是

01111…

例如:

4-1        011

8-1        0111

16-1       01111

32-1       011111

64-1       0111111

……

那么快速判断一个数是否为2的幂数

公式表示为:

n & (n-1)==0   (n>0)

 

函数表示:

int two2(int n) {
    return  n>0?n & (n - 1) ==0:0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值