3

大きなビットマスクを利用するアルゴリズムをiOSアプリ内に実装しようとしています。各ビットマスクの長さは最大256ビット(32バイト)です。マスク内の任意の位置などでビットをすばやく取得/設定する必要があります。

この種のことを簡単にするCまたはObjective-Cの組み込み言語機能はありますか、または任意の文字配列内のビットを操作するための独自の関数を作成することを期待する必要がありますか?自分でやるのは難しいことではないようですが、これを効率的かつクリーンに行うことができるものがすでにあるのであれば、自分で書くのはやめたほうがいいです。

4

4 に答える 4

3

この種の問題を処理するように設計されたCFMutableBitVectorを見てください。

于 2011-09-13T02:29:34.557 に答える
0

C++STLのstd::bitsetを見るとよいでしょう。

于 2011-09-13T02:27:39.350 に答える
0

ええと、32バイトは特に大きくはありません。

8マスクバイトの配列を作成し、ビット#の下位3ビットで配列にインデックスを付け、ビット#の残りの5ビットを使用してビットを保持するバイトの配列をアドレス指定することにより、ビットを取得/設定できます。

標準Cライブラリにおよび/またはxorバイト文字列演算があることを思い出しませんがandbytes(target, source, count)、ビットのセット間で演算を実行するために、たとえば実行する関数を作成するのは難しくありません。

あなたがする必要がある主なことは、ビット配列のストレージをどのように制御するかを理解することです。それらが256ビットに固定されている場合、ビットを含むchar[8]配列を使用してObjective-Cオブジェクトにするのが最も理にかなっています。

于 2011-09-13T02:28:05.160 に答える
0

LibTomMathライブラリには、任意のサイズの整数に対して必要な論理演算があります

AppleのiOSAccelerateFrameworkは、おそらく256ビット整数(および1024ビットまでの他のサイズ)で論理演算を提供しますが、ドキュメントは大雑把です。

于 2011-09-13T02:42:37.773 に答える