首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用C语言计算8位二进制值的Hamming距离

用C语言计算8位二进制值的Hamming距离
EN

Stack Overflow用户
提问于 2013-11-06 23:06:14
回答 2查看 6.2K关注 0票数 5

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

这是我的计数方法;

代码语言:javascript
运行
复制
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位二进制文件。

代码语言:javascript
运行
复制
 PrintInBinary(a);
 PrintInBinary(b);

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

让我给你看输出;

代码语言:javascript
运行
复制
Enter two unsigned integers (0-99): 55 64
Your choices are 55 and 64
Number A: 00110111
Number B: 01000000
Hamming distance is ; 5
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-06 23:50:56

把副词放在n&1和m&1附近。

代码语言:javascript
运行
复制
if ((n&1) != (m&1))

http://ideone.com/F7Kyzg

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

票数 8
EN

Stack Overflow用户

发布于 2013-11-06 23:07:39

您也需要移动m以比较正确的位元。

不管平等测试是否通过,您都需要转移它们。(将移位移出内部} )

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19824740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档