您的位置:首页 > 编程语言 > C语言/C++

461 Hammi 4000 ng Distance

2017-02-25 15:13 113 查看

一、题目简述

汉明距离为两个整数之间不同比特数的位数。给定两个整数x,y,计算汉明距。

0≤x,y≤231

二、编程思路

比较不同两个整数x,y比特数不同的位数,一种思路可以对其依次右移,比较其最低位是否相同,使用累加器计算相同的位数。

也可以先将x,y进行异或得到z,则z二进制串中1的个数即是所求汉明距。从而将问题转化为求二进制数中1的个数

三、代码实现

使用第二种方法,实现如下:

class Solution {
public:
int hammingDistance(int x, int y) {
int tmp, dis = 0;
tmp = x^y;
while (tmp > 0){
if (tmp & 1 == 1)
dis++;
tmp >>= 1;
}
return dis;
}
};


四、心得体会

使用位操作可以提高程序速率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Hamming C++