计算两数的汉明距离

这篇博客介绍了如何使用PHP计算两个整数的汉明距离。通过将整数转化为二进制,然后填充到相同长度,比较每一位的不同来计算距离。示例代码中定义了两个函数`hammingDistance`和`hd`,并给出了一个实际的例子,计算1和4之间的汉明距离。
摘要由CSDN通过智能技术生成

计算两个整数的汉明距离 - 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);

?>

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值