计算两个整数的汉明距离 - PHP版
<?php
/**
* @param Integer $x
* @param Integer $y
* @return Integer
*/
function hammingDistance(int $x, int $y) {
//计算两个整数的二进制值
$x_hash = decbin($x);
$y_hash = decbin($y);
//把两个整数转换出来的二进制统一长度 - 左边填充 0
$x_hash = str_pad($x_hash, 64, '0', STR_PAD_LEFT);
$y_hash = str_pad($y_hash, 64, '0', STR_PAD_LEFT);
//计算汉明距离
$result = hd($x_hash, $y_hash);
return $result;
}
/**
* @param Integer $x
* @param Integer $y
* @return Integer
*/
function hd(int $h1, int $h2)
{
$dist = 0;
for ($i=0;$i<64;$i++) {
if ( $h1[$i] != $h2[$i] )
$dist++;
}
return $dist;
}
$result = hammingDistance(1,4);
print_r($result);
?>