通过leetcode学习位运算及其Go实现
发布时间:2020-12-16 09:44:54 所属栏目:大数据 来源:网络整理
导读:问题描述 461. Hamming Distance 即求两个正整数的二进制对应位数不同的个数 原理说明 从问题描述来看,最直观的解决方法就是十进制数先转成二进制,再比对相同位数是否相同,不同则计数器累加,最终计数器的值即是 Hamming Distance 。 优化方案:先 ^ 运算
问题描述461. Hamming Distance 原理说明从问题描述来看,最直观的解决方法就是十进制数先转成二进制,再比对相同位数是否相同,不同则计数器累加,最终计数器的值即是
基于这个思想,需要用到的有 异或^ 和 异或非异或运算法则:相同为零,不同为一。 输入A: 1 0 1 0 输入B: 1 1 0 0 异或运算结果: 0 1 1 0 异或非(同或)运算结果:1 0 0 1 左移<< 和 右移>>左移
右移
代码实现func hammingDistance(x int,y int) int { counter := 0 tmp := x ^ y t := 1 for i := uint(0); i < 32 && t > 0; i++ { t = tmp >> i counter += (tmp >> i) & 1 } return counter } 参考
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |