一、问题描述
两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
给你两个整数 x
和 y
,计算并返回它们之间的汉明距离。
题目链接:汉明距离
二、题目要求
样例 1
输入:x=1, y=4输出:2解释:1 (0001) 4 (0100) ↑↑上面的箭头指出了对应二进制位不同的位置。
样例 2
输入:x=3, y=1输出:1
考察
位运算简单题型 建议用时5~20min
三、问题分析
本题是位运算的第3题,没了解过位运算相关知识点可以看这一篇文章,讲解比较详细:
什么是汉明距离,简单来讲就是将两个10进制数字转换成2进制数字之后,统计不同位置上面1的个数,那如何将这题逐渐向位运算靠拢呢?
不同位置,啥叫不同位置,不就是如果相同位置都是1或0,那么就不计数。只有当相同位置一个为1,另一个为0时才开始计数,这不就是位运算的异或计算吗?
四、编码实现
classSolution { public: inthammingDistance(intx, inty) { inti,ans=0;//初始化数据for(i=0;i<32;i++)//32位循环判断 { if((x^y)&1<<i)//与计算并且开始查询1的个数 { ans++;//计数器++ } } returnans;//输出结果 } };