在ruby中,計算兩個無符號整數(例如漢明距離)之間的位差的最有效方法是什麼?計算紅寶石漢明距離最有效的方法是什麼?
例如,我有一個整數= 2323409845和b = 1782647144.
它們的二進制表示是:
a = 10001010011111000110101110110101
b = 01101010010000010000100101101000
之間的一個& b爲17比特差..
我可以對它們進行邏輯異或,但是這會給我一個不同的整數!= 17,然後我必須迭代結果的二進制表示,並計算1的#號。
什麼是計算位差的最有效方法?
現在,爲了計算多個整數序列的位差,答案是否改變?例如。給出2個無符號整數序列:
x = {2323409845,641760420,509499086....}
y = {uint,uint,uint...}
什麼是計算兩個序列之間的位差的最有效的方法?
你會遍歷序列,還是有更快的方法來計算整個序列的差異一次?
謝謝!我只是這樣做了,它似乎比下面的方法快了3倍(使用Ruby的優化字符串函數) – ch3rryc0ke
我對這個派對很遲,但你可能想要[這個popcount基準](http:// dalkescientific。 com/writings/diary/popcnt.cpp)。 '__builtin_popcount'是最慢的方法之一,如果你不[使用編譯標誌](http://www.dalkescientific.com/writings/diary/archive/2011/11/02/faster_popcount_update.html) – x1a4