版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

记录一些二进制的应用技巧。

清零一个数的最左边或最右边n位

...

  • 清零最左边n位:x & (

...

  • (unsigned)(~0) >> n)

...

  • 清零最右边n位:x & ((unsigned)(~0) << n)

判断一个整数是不是2的整数次方

代码块
bool isPowerOfTwo(unsigned int n) {
    return !(x & (x-1));
}

计算整数的二进制形式中1的个数

代码块
int countBitsOne(unsigned int n) {
    int ans = 0;
    while(n) {
		n &= n - 1;
		ans++;
    }
	return ans;
}

zigzag

参考:整数-zigzag算法

计算两个整数通过位翻转变成同一个数,要翻转的位数是多少位

返回x ^ ny即可。