符号なし整数のシーケンスが増えているとします。C[i]
彼らが増加するにつれ、彼らはますます多くのビットを占有する可能性が高いです。私は、シーケンスC[i]
とC[i+1]
の2つの連続した要素(過去と未来は観測できません)に基づいた効率的な条件付きを探しています。これは、必要なビット数が増えるたびに正確にまたはほぼ1回評価されます。条件付きのビット数を増やす効率的な条件式
明らかに(しかし遅い)選択肢は次のとおりです。
if (ceil(log(C[i+1])) > ceil(log(C[i]))) ...
と同様に(より良いまだ大きくない)特殊なCPUのオペコードを使用して、先行ゼロのビットの数を計算何でも。
ちょうどビットごとまたはビットごとに値を使用し、値がC[i+1]
およびC[i]
のniceソリューションがあると思われます。何かご意見は?
の可能重複[ビット配列に設定されている(左端)の最上位ビットを検索](http://stackoverflow.com/questions/2589096/find-most-significant -bit-left-most-that-at-a-bit-array) – kennytm
これを複製としてフラグを立てないでください!あまり一般的ではない可能性がある問題について質問しています。 –