按位与运算(&)
前言
与运算(&):二进制按位与,即两位都为1则值为1,不同则为0.
例:
00101100
& 10010110
____________
00000100
我们可以根据其特性进行一些功能的巧妙实现。
一、判断某一个数字是否为2的m次幂
1、找规律
2,4,8,16的二进制数为0010,0100,1000,00010000
2、计算
由此可见2的次幂其二进制数为1后面补次幂个0,所以将这个数字减去1之后除了最高位其他位为1,
所以将这个数和减1之后的数字进行与运算其值一定为0.
例:
00100000
& 00011111
_________
00000000
3、总结
如果 n&(n-1)==0 则n是2 的m次幂
二、2的次幂数特性应用
例:若s=m+n,m=2^M ,n=2^N
则s&m==m,s&n==n。
规律:
2,4,8,16的二进制数为0010,0100,1000,00010000
则2+4为的二进制为 0110
0110 0110
& 0010 & 0100
_______________ _____________
0010 0100
总结:俩2的幂次方的数相加,其值与这两个被加数的任意一个做与运算(&)得值都为这个被加数本身