問題タブ [bitset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - ビットセット リファレンス
http://www.cplusplus.com/reference/stl/bitset/から:
ほとんどの C++ 環境にはこのような小さな要素型は存在しないため、個々の要素は、要素を模倣する特別な参照としてアクセスされ
bool
ます。
正確には、このビット参照はどのように機能するのでしょうか?
私が考えることができる唯一の方法は、char
s の静的配列を使用することですが、その場合、各インスタンスはそのインデックスを配列に格納する必要があります。各参照インスタンスのサイズは少なくとも asize_t
であるため、ビットセットのコンパクトさが損なわれます。さらに、サイズ変更は遅くなる可能性があり、ビット操作は高速であると予想されます。
c++ - ビットセットを構造体フィールドに保存する
ビット演算に MACROS を使用せず、BitSet を使用することにしました。基本的に私がやろうとしているのは、構造体を受け取り、そのビットを評価してから、それらを別の構造体に追加することです。
Struct を受け取ります。次のように言います。
ステータスを取得し、受信した各ビットをチェックする必要があるため、受信した構造体のビットセットを作成します。
さて、評価の後、受信したビットを別の構造体に追加する必要があります。
だから、私がすることは:
ビットを構造体フィールドに割り当てたいのですが、次のエラーが表示されます: 代入で 'std::bitset<16u>' を 'uint16' に変換できません
構造体フィールドの型を変更したくないので、どうすればよいですか? 私の質問がどれほど愚かであるかをお詫びします。
前もって感謝します
c++ - C++ Novice regarding Bitset operations with strings
I'm currently learning about bitset, and in one paragraph it says this about their interactions with strings:
"The numbering conventions of strings and bitsets are inversely related: the rightmost character in the string--the one with the highest subscript--is used to initialize the low order bit in the bitset--the bit with subscript 0."
however later on they give an example + diagram which shows something like this:
value of str
:
1 1 1 1 1 (1 1 0 0) 0 0 0 ...
value of bitvec5
:
...0 0 0 0 0 0 0 (1 1 0 0)
This example shows it taking the rightmost bit and putting it so the last element from the string is the last in the bitset, not the first.
Which is right?(or are both wrong?)
c++ - Bitset エラーを克服する方法
私が書いたら、
それは私に言うエラーを与えています
エラー C2975: '_Bits': 'std::bitset' のテンプレート引数が無効です。コンパイル時の定数式が必要です
このエラーを解決するにはどうすればよいですか。実行時にビットセットを初期化したいのですが、可能ですか? またはこれを行う他の方法はありますか?
c++ - VS2010 を使用した C++ のビットセット
ここで何か間違ったことをしているのかどうかわかりません。うまくいけば、ここの誰かが私を啓発してくれます。
クラスがFlags
あります。これは非常に単純化されたバージョンですが、ビットセットを宣言します
私のコンストラクタでは、次のように初期化します
しかし、それはコンパイルされず、エラーが発生します
エラー C2668: 'std::bitset<_Bits>::bitset': オーバーロードされた関数のあいまいな呼び出し
これは VS2010 SP1 64 ビットでコンパイルされていますが、32 ビット プログラムとしてコンパイルされています。
編集
受け入れられた答えは上記のものですが、補足として、デフォルトのコンストラクター(すべてをゼロに初期化する必要があります)を使用するときに、すべてがゼロに設定されない理由を誰かが説明できますか?
1390560944 を返し、_p は次のようになります
c++ - VS2010 (別) を使用した C++ のビットセット
VS2010を使用したC ++のVS2010ビットセットのバグであることが判明したビットセットについて別の質問を しました
ただし、ビットセットに使用したコンストラクターを変更すると、別の問題が発生しました(他の質問の編集で説明されているように)
ビットセットにデフォルトのコンストラクターを使用すると、0 に初期化されず、代わりに次のように設定されます。
そして_p.to_ulong()
戻る1390560944
これがコードです
私も使用してみ: _p(32)
ましたが、上記と同じビットが設定されましたが、返される値to_ulong()
は1437615792
どうしたの?
編集:これはVS2010 SP1 64ビットで32ビットプログラムとしてコンパイルされています
編集2:
以下のコメントで、私は単純なプログラムでそれを再現できると言いました.
私の他のプロジェクト(私が試みているエミュレーター)では、関数ポインターのいくつかの配列に絞り込みました。値が割り当てられている場所を取り出すと、危険な動作は発生しません。これらの配列はここで確認できます
メモリアドレス指定関数が存在しないため、そのコードはコンパイルされません。それらを含めるには、他のクラスなどを多数含める必要があります。しかし、関数ポインタ配列に値を割り当てると、ビットセットの値に影響するのはなぜですか? init()
ビットセットは呼び出される前に初期化されます
c++ - bitset::operator[] == false/true または bitset::test?
bitset::operator[] の使用は bitset::test の使用と同等ですか、それとも根本的な最適化がありますか?
つまり、これら 2 つのループは同等ですか?
bitset::operator[] の使用:
bitset::test() の使用:
java - 圧縮ソートセット実装
スペース効率の良い方法で実装に多数のLong
値を格納する必要があります。SortedSet
ビットセットの実装を検討していたところ、 Javaewahを発見しました。ただし、API はsint
ではなく値を想定していますlong
。
誰かが代替案を推奨したり、この問題を解決する良い方法を提案したりできますか? 私は主にスペース効率に関心があります。セットを作成したら、最小要素と最大要素に 1 回アクセスする必要があります。ただし、アクセス時間は大きな問題ではありません (つまり、完全にランレングスでエンコードされた実装で問題ありません)。
編集
コレクションの最小要素と最大要素にアクセスできるのであれば、実装でインターフェイスを実装する必要がないことは明らかです。SortedSet
scala - ScalaBitSetとシフト操作
整数のセットをビットベクトル(その整数のセットの特性関数になる)で表現し、このセットに対してビット単位の演算を実行できるようにする方法を探しています。
当初、scalaのBitSetが理想的な候補になると思いました。ただし、ドキュメント1によると、BitSetはシフト操作をサポートしていないようです。さらに調査したところ、関連するJavaBitSet実装はシフト操作もサポートしていないことがわかりました2。
シフト操作をサポートする独自のBitSetクラスを実装する唯一のオプションが残っていますか?さらに、 3で与えられた説明によると、ScalaのBitSet実装でシフト操作をサポートすることはそれほど難しいことではないように聞こえますか、それとも私はここで何かを誤解しましたか?
前もって感謝します。