JavaScript计算汉明距离(HammingDistance)

前言

汉明距离表示两个(相同长度)字对应位不同的数量,我们以d(x,y)表示两个字x,y之间的汉明距离。对两个字符串进行异或运算,并统计结果为1的个数,那么这个数就是汉明距离。

在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数。

例如:

  • “wised” 与 “roses” 之间的汉明距离是 3
  • 010001 与 100000 之间的汉明距离是 3

这里以计算两个整数的汉明距离为例。

实现代码

<script>
    const hammingDistance = (num1,num2) => ((num1 ^ num2).toString(2).match(/1/g) || '').length;
    document.write(hammingDistance(17,32));//3 
    //17的二进制数: 010001;32的二进制数:100000
</script>

总结

  1. 计算两个整数的汉明距离主要步骤:

Use XOR operator (^) to find the bit difference between the two numbers, convert to a binary string using toString(2). Count and return the number of 1s in the string, using match(/1/g)

通过异或运算计算两个数在二进制上的差异,将其转为二进制字符串,匹配字符串中"1"的个数

  1. 在JavaScript中使用异或(^)运算符返回的值为十进制数,如(17 ^ 32)返回49;
  2. 异或操作:

如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。

异或也叫半加运算,其运算法则相当于不带进位的二进制加法:
二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1)。

  1. 注意使用match方法时可能返回null
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值