【基础知识】汉明距离(Hamming Distance)

汉明距离

假如一组二进制数据为101,另外一组为111,那么显然把第一组的第二位数据0改成1就可以变成第二组数据111,所以两组数据的汉明距离就为1

简单点说,汉明距离就是一组二进制数据变成另一组数据所需的步骤数(它表示两个相同长度的字符串对应位置的不同字符的数量),显然,这个数值可以衡量两张图片的差异,汉明距离越小,则代表相似度越高。汉明距离为0,即代表两张图片完全一样
【基础知识】汉明距离(Hamming Distance)_第1张图片

汉明重量

汉明重量是字符串相对于同样长度的零字符串的汉明距离,也就是说,它是字符串中非零的元素个数:对于二进制字符串来说,就是 1 的个数,所以 11101 的汉明重量是 4。

汉明距离计算

 //Brian Kernighan 算法计算汉明距离
        public static void HammingDistance(int x, int y)
        {
            int s = x ^ y, ret = 0;
            while (s != 0)
            {
                s &= s - 1;
                ret++;
            }
            Console.WriteLine(ret);
        }

你可能感兴趣的:(#,Base,IO,c#,测试工具)