javascript
JavaScript计算汉明距离(HammingDistance)
文章目錄
- 前言
- 實(shí)現(xiàn)代碼
- 總結(jié)
前言
漢明距離表示兩個(gè)(相同長(zhǎng)度)字對(duì)應(yīng)位不同的數(shù)量,我們以d(x,y)表示兩個(gè)字x,y之間的漢明距離。對(duì)兩個(gè)字符串進(jìn)行異或運(yùn)算,并統(tǒng)計(jì)結(jié)果為1的個(gè)數(shù),那么這個(gè)數(shù)就是漢明距離。
在信息論中,兩個(gè)等長(zhǎng)字符串之間的漢明距離是兩個(gè)字符串對(duì)應(yīng)位置的不同字符的個(gè)數(shù)。
例如:
- “wised” 與 “roses” 之間的漢明距離是 3
- 010001 與 100000 之間的漢明距離是 3
這里以計(jì)算兩個(gè)整數(shù)的漢明距離為例。
實(shí)現(xiàn)代碼
<script>const hammingDistance = (num1,num2) => ((num1 ^ num2).toString(2).match(/1/g) || '').length;document.write(hammingDistance(17,32));//3 //17的二進(jìn)制數(shù): 010001;32的二進(jìn)制數(shù):100000 </script>總結(jié)
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)
通過(guò)異或運(yùn)算計(jì)算兩個(gè)數(shù)在二進(jìn)制上的差異,將其轉(zhuǎn)為二進(jìn)制字符串,匹配字符串中"1"的個(gè)數(shù)
如果a、b兩個(gè)值不相同,則異或結(jié)果為1。如果a、b兩個(gè)值相同,異或結(jié)果為0。
異或也叫半加運(yùn)算,其運(yùn)算法則相當(dāng)于不帶進(jìn)位的二進(jìn)制加法:
二進(jìn)制下用1表示真,0表示假,則異或的運(yùn)算法則為:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同為0,異為1)。
總結(jié)
以上是生活随笔為你收集整理的JavaScript计算汉明距离(HammingDistance)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用ArcGIS JS API加载WMT
- 下一篇: ArcGIS JS API加载GeoSe