代码中一些有趣的二进制操作

二进制不是0就是1,有点枯燥乏味,对我们来说可能是没有十进制友好,但是对计算机却是很友好,计算机对二进制的处理可谓是手到擒来。其实代码中对二进制的使用也有很多有趣的操作,本篇就是对一些二进制操作的实例记录。(为了方便,下面的例子都是默认输入都是正整数,也没有多余的判断,可能不够严谨,目的只是为了体现二进制的一些操作而已)

 

1.奇数偶数的校验

偶数就是能被2整除的那些整数,所以就应该这么写:

num % 2 == 0

如果从二进制的角度考虑,偶数就是最右边的那个位子上的是0而不是1,所以也可以这样写:

(number & 1) == 0

 

2.判断是否为2的幂次方

2的幂次方,从二进制上可以很快找到规律,比如1,2,4,8,16...

对应的二进制位1,10,100,1000,10000...

可以发现其实就最高位(左边那位)是1,其他位全是0,也就是说只有一个bit位上是1,那么由当前数做个减一的操作,就变成了最高位是0,而右边的所有位都变成1了,再做个&与操作,得到的结果就一定位0:

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

 

3.求当前输入输的下一个2的幂次方的数(如果本身输入就是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值