打卡!!!每日一题
今天给大家带来一道位运算类型的题目,题目很简单,但是很多人对于位运算没有一个比较清晰的认知,今天通过这道题目带大家了解一下。
题目描述:461. 汉明距离
两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
给你两个整数 x 和 y,计算并返回它们之间的汉明距离。
题目示例:
这道题其本质就是让你将x,y转化为2进制,然后计算两个二进制之间不同的位数。
我们无需直接将x,y进行二进制的转换,我们可以一位一位的去比较
核心代码如下:
if ((x & (1 << i)) != (y & (1 << i))) {
count++;
}
上面这个代码什么意思呢?
就是从最右边也就是最低位开始比较,判断该为是否是1,如果是1,则 x & 1 < < i = 0 x\&1<<i=0 x&1<<i=0,反之为1
class Solution {
public int hammingDistance(int x, int y) {
if (x == y) {
return 0;
}
int count = 0;
for (int i = 0; i < 32; i++) {
if ((x & (1 << i)) != (y & (1 << i))) {
count++;
}
}
return count;
}
}