算法 - 计算汉明间隔
1. 题目
给出两个整数 x 和 y,计算它们之间的汉明间隔。
汉明间隔
是应用在数据传输差错控制编码外面的,汉明间隔是一个概念,它示意两个(雷同长度)字对应位不同的数量,咱们以d(x,y)示意两个字x,y之间的汉明间隔。对两个字符串进行异或运算,并统计后果为1的个数,那么这个数就是汉明间隔。
示例:
- 输出: x = 1, y = 8
- 输入: 2
解释:
- (0 0 0 1)
(1 0 0 0)
↑ ↑下面的箭头指出了对应二进制位不同的地位。
2. 代码
2.1. C
public class Solution { public int HammingDistance(int x, int y) { var n = x ^ y; // 计算1的个数 var counter = 0; while(n>0){ n = n & (n-1); counter ++; } return counter; }}
2.2. Javascript
var hammingDistance = function(x, y) { let n = x^y; let counter = 0; while(n){ counter ++; n = n & (n-1); } return counter;};
3. 另:计算二进制数字中1的个数
一个整数减去1,再和原整数做与运算,会把该整数最左边一个1变成0。
因而,一个整数的二进制有多少个1,就能够进行多少次这样的操作。
let counter = 0; while(n){ counter ++; n = n & (n-1); }