位运算在常见场景下的运用
首先需要回顾一下常用的位运算操作
^
异或运算: 两个位相同为0,相异为1。&
与运算:两个位都为1时,结果才为1。|
或运算:两个位都为0时,结果才为0。<<
左移:各二进位全部左移若干位,高位丢弃,低位补0。>>
:各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)
LeetCode 461.汉明距离
两个整数之间的[汉明距离](https://baike.baidu.com/item/汉明距离)指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 `x` 和 `y`,计算它们之间的汉明距离。
答案:
int numberOfOne(int n) {
int count = 0;
while (n != 0) {
++count;
n &= (n - 1);
}
return count;
}
public int hammingDistance(int x, int y) {
return numberOfOne(x ^ y);
}
<