什么是汉明距离

汉明距离是使用在数据传输差错控制编码里面的,汉明距离是一个概念,它表示的是两个数字对应二进制不同的
位置的数量.

汉明距离的实现

顾名思义,示的是两个数字对应二进制不同的位置的数量,我们就是用最简单的方法把两个数不同的二进制位统计
出来就行了(异或,相同位相同为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 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_43577471/article/details/108780950