6

入力のセットビット数を数えることについて多くの質問を見てきましたinsert type ofが、なぜそれが役立つのですか?

ビットカウントに関するアルゴリズムをお探しの方は、こちらをご覧ください。

  1. unsignedlongsのシーケンスで共通ビットをカウントする
  2. unsignedintのビット遷移の数をカウントする最速の方法
  3. 32ビット整数のセットビット数を数える方法は?
4

4 に答える 4

5

ビットの文字列を、と見なすことができますset。1は、対応する要素のセットのメンバーシップを表します。したがって、ビットカウントpopulation countはセットのを提供します。

実用的なアプリケーションには、圧縮、暗号化、およびエラー訂正コードが含まれます。たとえば、 wikipedia.org / wiki/Hamming_weightおよびwikipedia.org/wiki/Hamming_distanceを参照してください。

于 2010-04-13T15:52:28.130 に答える
0

独自のパリティスキームを使用している場合は、ビット数をカウントすることをお勧めします。(もちろん、一般的には、他の誰かを使用したいです。)古いコンピューターをエミュレートしていて、元のコンピューターでの実行速度を追跡したい場合は、数値に応じて速度が変化する乗算命令が含まれているものもあります。 1ビットの。

過去10年ほどでやりたかったことはいつでも思いつかないので、これは実際の必要性というよりはプログラミングの練習だと思います。

于 2010-04-13T16:05:06.673 に答える
0

皮肉なことに、これは詳細な低レベルの思考を必要とし、計算機科学のコースで標準的なアルゴリズムとして教えられていないように見えるため、面接の質問に役立ちます。

于 2010-04-13T16:05:42.830 に答える
0

ビットマップを使用して「もの」の有無を示すのが好きな人もいます。

単語内の最下位の1ビットを分離し、その下のビットの1のフィールドに変換する簡単なハックがあります。次に、1ビットを数えることでビット数を見つけることができます。

countbits((x XOR (x-1)))-1;

それが機能するのを見てください。

Let x =     00101100
Then x-1 =  00101011
x XOR x-1 = 00000111

これは3ビットが設定されているため、元のワードではビット2が最下位の1ビットでした。

于 2010-04-13T16:09:36.903 に答える