leetcode算法题–计算两个数据间的汉明距离
前言
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目
一、按位异或
1.原理
^按位异或:两个位不同,结果是1,否则结果为0.
2.代码
{
// 1 (0 0 0 1)
// 4 (0 1 0 0)
// 5 (0 1 0 1) 异或
let x = 1,
y = 4;
let Hamming = (x, y) => {
// 异或
return eval((x ^ y).toString(2).split('').join('+'));
};
console.log(Hamming(x, y));
}
二、按位与
1.原理
&按位与:两个位都是1,结果就是1,否则为0
2.代码
{
// 010101
// -1 010100=>010100
// -1 010011=>010000
// -1 001111=>000000
let x = 1,
y = 4;
let Hamming = (x, y) => {
// 统计1的数量
let result = x ^ y;
let count = 0;
while (result) {
//按位与运算
result = result & (result - 1);
count++;
}
return count;
};
console.log(Hamming(x, y));
}