NOTE
汉明距离
使用按位异或计算两个整数之间的汉明距离。
这是历史学习笔记,可能存在过时或不完整的理解。
1. 题目描述
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x 和 y,计算它们之间的汉明距离。
2. 思路
- 思路一
- 异或:相同为0,不同为1
- 与:假设取第3位,那么&0001000即可
- 思路二
- 直接异或
- 在统计1的个数
3. 实现
3.1. 每个bit异或
package main
func hammingDistance(x int, y int) int {
bit := 1
count := 0
for i := 0; i < 32; i++ {
numx := x & bit
numy := y & bit
if numx^numy != 0 {
count += 1
}
bit <<= 1
}
return count
}
3.2. 异或后统计
func hammingDistance(x int, y int) int {
res := 0
xor := x ^ y
bit := 1
for i := 0; i < 32; i++ {
if xor & bit != 0 {
res++
}
bit <<= 1
}
return res
}
讨论
使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看