入力のセットビット数を数えることについて多くの質問を見てきましたinsert type of
が、なぜそれが役立つのですか?
ビットカウントに関するアルゴリズムをお探しの方は、こちらをご覧ください。
入力のセットビット数を数えることについて多くの質問を見てきましたinsert type of
が、なぜそれが役立つのですか?
ビットカウントに関するアルゴリズムをお探しの方は、こちらをご覧ください。
ビットの文字列を、と見なすことができますset
。1は、対応する要素のセットのメンバーシップを表します。したがって、ビットカウントpopulation count
はセットのを提供します。
実用的なアプリケーションには、圧縮、暗号化、およびエラー訂正コードが含まれます。たとえば、 wikipedia.org / wiki/Hamming_weightおよびwikipedia.org/wiki/Hamming_distanceを参照してください。
独自のパリティスキームを使用している場合は、ビット数をカウントすることをお勧めします。(もちろん、一般的には、他の誰かを使用したいです。)古いコンピューターをエミュレートしていて、元のコンピューターでの実行速度を追跡したい場合は、数値に応じて速度が変化する乗算命令が含まれているものもあります。 1ビットの。
過去10年ほどでやりたかったことはいつでも思いつかないので、これは実際の必要性というよりはプログラミングの練習だと思います。
皮肉なことに、これは詳細な低レベルの思考を必要とし、計算機科学のコースで標準的なアルゴリズムとして教えられていないように見えるため、面接の質問に役立ちます。
ビットマップを使用して「もの」の有無を示すのが好きな人もいます。
単語内の最下位の1ビットを分離し、その下のビットの1のフィールドに変換する簡単なハックがあります。次に、1ビットを数えることでビット数を見つけることができます。
countbits((x XOR (x-1)))-1;
それが機能するのを見てください。
Let x = 00101100
Then x-1 = 00101011
x XOR x-1 = 00000111
これは3ビットが設定されているため、元のワードではビット2が最下位の1ビットでした。