什么是汉明距离
汉明距离是使用在数据传输差错控制编码里面的,汉明距离是一个概念,它表示的是两个数字对应二进制不同的
位置的数量.
汉明距离的实现
顾名思义,示的是两个数字对应二进制不同的位置的数量,我们就是用最简单的方法把两个数不同的二进制位统计
出来就行了(异或,相同位相同为0,否则为1)
1010b(10)
^
0101b(5)
------------------------
1111b(15)
int Hamming_distance = 0;
Hamming_distance = a ^ b; //(a,b为求汉明距离的两个数,这里a,b必须为int类型的不然数据会丢失)
这里已经求出汉明距离的数了,这时我们只需要统计这个数二进制数为1的个数了.下面提供两种方法来计算.
方法1
int count = 0;
while(Hamming_distance){
if( Hamming_distance &( 1 << 31 ) ){
count ++;
}
Hamming_distance <<= 1; //最好左移,如果有符号数的右移填充符号位
}
方法2
int count = 0;
while(Hamming_distance) {
count++;
Hamming_distance &= Hamming_distance -1;//或者Hamming_distance = Hamming_distance
// & (Hamming_distance - 1)
}
版权声明:本文为qq_43577471原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。