Hamming Distance位运算基础问题--力扣101算法题解笔记

10.2Hamming Distance位运算基础问题

题目描述

给定两个十进制数字,求他们二进制表示的汉明距离(Hamming Distance, 即不同位的个数)

输入输出样例

Input :x = 1, y = 4;

Output:2

在这个样例中,1的二进制是0001,4的二进制是0100,一共有两位不同

题解

进行按位异或操作,统计有多少个1

cpp 复制代码
#include <iostream>
using namespace std;

// 汉明距离:两个数字二进制 对应位不同 的数量
int hammingDistance(int x, int y) {
    //  第一步:异或运算 x ^ y
    // 规则:相同为0,不同为1
    // 例子:x=1(0001), y=4(0100)
    // 异或结果:0101 → 十进制 5
    int diff = x ^ y;

    int ans = 0;  // 统计 1 的个数(即不同位的数量)

    //  第二步:循环检查每一位是不是 1
    // 当 diff 不为0时,继续检查
    while (diff) {
        //  第三步:diff & 1 → 取**最后一位**
        //  与运算,两个都为 1 → 结果才是 1
        // 如果最后一位是1,ans+1;是0则+0
        ans += diff & 1;

        //  第四步:右移1位 → 把已经检查过的最后一位扔掉
        // 等价于:diff = diff / 2
        diff >>= 1;
    }

    // 最终 ans 就是二进制不同位的数量
    return ans;
}

int main() {
        int x = 1, y = 4;

        cout << hammingDistance(x, y) << endl;

        return 0;
}
相关推荐
吃好睡好便好4 小时前
在Matlab中绘制横直方图
开发语言·学习·算法·matlab
仰泳之鹅4 小时前
【C语言】自定义数据类型2——联合体与枚举
c语言·开发语言·算法
x_yeyue6 小时前
三角形数
笔记·算法·数论·组合数学
念何架构之路7 小时前
Go语言加密算法
数据结构·算法·哈希算法
AI科技星7 小时前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
失去的青春---夕阳下的奔跑8 小时前
560. 和为 K 的子数组
数据结构·算法·leetcode
黎阳之光8 小时前
黎阳之光:以视频孪生重构智慧医院信息化,打造高标项目核心竞争力
大数据·人工智能·物联网·算法·数字孪生
丷丩8 小时前
三级缓存下MVT地图瓦片服务性能优化策略
算法·缓存·性能优化·gis·geoai-up
m0_629494739 小时前
LeetCode 热题 100-----25.回文链表
数据结构·算法·leetcode·链表
ʚ希希ɞ ྀ10 小时前
单词拆分----dp
算法