C语言计算8位二进制值的汉明距离

标签 c count binary bit-manipulation hamming-distance

我编写了一个新程序来比较 2 个两位无符号整数。通过汉明距离进行比较。但我的算法并不完美。你能告诉我这段代码有什么问题吗:(非常感谢!!

这是我的计数方法;

int countHammDist(unsigned int n, unsigned int m)
{
int i=0;
unsigned int count = 0 ;
for(i=0; i<8; i++){
if( n&1 != m&1 ) {
    count++;
    }
n >>= 1;
m >>= 1;

}
return count;
}

a 和 b 8 位二进制文​​件。

 PrintInBinary(a);
 PrintInBinary(b);

 printf("\n %d", countHammDist(a,b));

让我告诉你输出;

Enter two unsigned integers (0-99): 55 64
Your choices are 55 and 64
Number A: 00110111
Number B: 01000000
Hamming distance is ; 5

最佳答案

在 n&1 和 m&1 两边加上括号。

if ((n&1) != (m&1))

http://ideone.com/F7Kyzg

这是因为 != 在 & 之前:http://www.swansontec.com/sopc.html

关于C语言计算8位二进制值的汉明距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19824740/

相关文章:

c - 家庭作业 - 无法利用缓冲区溢出

c - C 程序的段错误(核心转储)错误

sql - 包含 SQL 列的结果的百分比

mysql - SELECT,第二个表中的 2 个计数,第三个表中的 RIGHT JOIN

macos - Mac App Store 二进制拒绝问题

c - NDIS lwf(协议(protocol))驱动程序是否需要在Windows中签署数字签名使用?

c - fatal error C1083 : Cannot open include file, 但它位于同一目录中

count - 方案:为什么 'set!' 修改局部变量 'let' ?

c - 访问数组中的每个第 n 个元素(汉明代码)

python-3.x - 为什么我无法使用逻辑运算符和索引获得预期输出?