Bootstrap

位运算的奇技淫巧

判断奇偶数 (奇数)a&1==1 (偶数)a&1==0

整除2 a>>1

取最低位的1 a&(~(a-1))

判断两个数是否相等 a^b==1 不相等 a^b==0是相等

求一个数二进制位有几个1,用消去1的次数来统计 a&(a-1) 消去最后一位1

是不是2的幂也就是二进制位只有一个1 x&x-1==0

是不是4的幂 首先是4的幂一定也是2的幂 4的幂最大数0x55555555

( x&(x-1)==0 )||((x&0x55555555)!=0)

用位运算计算加法

两个数相加a = 2,b= 3;

2的二进制10+3的二进制11 = 101

考虑不进位sum = a^b;

进位 $b = a&b<<1;

$a = $sum

while($b!=0){
    $sum = $a^$b;
    $b = ($a&$b)<<1;
    $a = $sum;
}

如何快速的将一个奇数变成偶数,偶数变成奇数

(x+1)^1-1

;