在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