ルビでは、2つの符号なし整数間のビット差(ハミング距離など)を計算する最も効率的な方法は何ですか?ルビーのハミング距離を計算する最も効率的な方法は?
例えば、Iは、整数A = 2323409845およびbを有する= 1782647144.
そのバイナリ表現は、次のとおり
a = 10001010011111000110101110110101
b = 01101010010000010000100101101000
& Bとのビット差は17である..
Iそれらの論理XORを行うことができますが、それは私に別の整数を与える!= 17、私は結果のバイナリ表現を反復し、#の1を集計する必要があります。
ビット差を計算する最も効率的な方法は何ですか?
ここで、多くのintのシーケンスのビット差を計算する答えが変わるのですか?例えば。符号なし整数の2つのシーケンスを指定します。
x = {2323409845,641760420,509499086....}
y = {uint,uint,uint...}
2つのシーケンスのビット差を計算する最も効率的な方法は何ですか?
シーケンスを繰り返したり、シーケンス全体の差を一気に計算する方法はありますか?
ありがとうございます!私はちょうどそれを行ったし、以下の方法(Rubyの最適化された文字列関数を使用して)よりも3倍速いと思われます。 – ch3rryc0ke
私はこのパーティーに非常に遅いですが、[this popcount benchmark](http:// dalkescientific) com/writings/diary/popcnt.cpp)をスピンします。 '__builtin_popcount'は、[コンパイルフラグを使用しない場合]最も遅い方法の1つです(http://www.dalkescientific.com/writings/diary/archive/2011/11/02/faster_popcount_update.html) – x1a4