二进制不是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