1. lowbit2020-04-08

    lowbit = m & -m = 2的k次方 k为x从最右到左连续0的个数。(0除外) 这里利用的负数的存储特性,负数是以补码存储的,对于整数运算 x&(-x)有 ● 当x为0时,即 0 & 0,结果为0; ●当x为奇数时,最后一个比特位为1,取反加1没有进位,故x和-x除最后一位外前面的位正好相反,按位与结果为0。结果为1。 ●当x为偶数,且为2的m次方时,x的二进制表示中只有一位是1(从右往左的第m+1位),其右边有m位0,故x取反 ...

    阅读全文