問題タブ [bit-fields]

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.

0 投票する
5 に答える
1685 参照

sql - 多くのビットを格納する -- 複数の列を使用するか、単一のビットフィールド列を使用する必要がありますか?

Userデータベースでテーブルを設計しています。「許可」または「不許可」のいずれかを指定できるオプションは、ユーザーごとに約 30 ほどあります。

私の質問は、これらを 30bit列として保存する必要があるか、それとも単一のint列を使用してそれらを保存し、アプリケーションの各ビットを解析する必要があるかということです。

また、データベースは SQL Server 2008 および 2005 です (環境によって異なります)。

0 投票する
3 に答える
2905 参照

c++ - Bitfields in C++

I have the following code for self learning:

I know that unsigned int k:4 means that k is 4 bits wide, or a maximum value of 15, and the result is the following.

For example, filed1 can be from 0 to 7 (included), field2 and k from 0 to 15. Why such a result? Maybe it should be all zero?

0 投票する
4 に答える
938 参照

c - ビットフィールドを自動変数として宣言できないのはなぜですか?

コロンを使用して指定されたサイズのビットフィールドを宣言したい (構文が何と呼ばれるか思い出せない)。私はこれを書きたい:

しかし、GCC は構文エラーだと言っています (ネストされた関数を記述しようとしていると思われます)。私はこれをしても問題ありません:

そして、そのような構造体を 1 つスタックに置く

これは、セマンティックの問題ではなく、構文によって妨げられていると私に信じさせます。

では、なぜ最初の例がうまくいかないのでしょうか? 私は何が欠けていますか?

0 投票する
2 に答える
1875 参照

mysql - MySQLでは、BIT列は5、6、または7バイトの整数を格納するのに適した方法ですか?

サイズを抑えたいテーブルがあり、列の1つを5バイトの符号なし整数として扱うことができます。これは私が検索する必要のない列です。

MySQLは整数データ型を提供します

  • TINYINT、1バイト整数の場合
  • SMALLINT、2バイト整数の場合
  • MEDIUMINT、3バイト整数の場合
  • INT、4バイト整数の場合
  • BIGINT、8バイト整数の場合。

ただし、1≤M≤64の場合も提供BIT(M)されます。これにより、0から2 M-1までの符号なし整数が(事実上)格納されます。BIT(40)5バイト整数を格納するために列を使用することを避ける理由はありますか?(前述したように、この列で検索する必要はありません。したがって、クエリの実行速度に関連する問題は無視できます。)

0 投票する
4 に答える
4184 参照

c++ - C ++コンストラクタでビットフィールドを初期化する方法は?

まず、移植性には関心がなく、エンディアンは変わらないと安全に推測できます。ハードウェアレジスタ値を読み取ると仮定して、ビットマスクを使用せずにレジスタ内の個々のフィールドを参照できるように、そのレジスタ値をビットフィールドにオーバーレイしたいと思います。

編集: GManによって指摘された問題を修正し、将来の読者にとってより明確になるようにコードを調整しました。

参照:より雄弁な解決策については、以下のAndersK.とMichaelJの回答を参照してください。

0 投票する
1 に答える
1214 参照

c - 冗長な__packed__属性

このコードは、Microchip社のPIC32MXマイクロプロセッサ用です。彼らのコンパイラは本質的にGCC3.4です。

私はGCCの__packed__属性を使用してビットフィールドをユニオンにパックし、後でunsigned charSPIまたはI2Cを介して送信するための(つまり、型のパンニング)としてそれらを取得する傾向があります。この動作はすべて私の実装によって定義されており、完全に機能します。私はこれを100行ほどのマスキングとシフトよりも好みます:)

私の質問は:__packed__以下のコードに冗長な属性がありますか?一見、トップレベルの組合員は免除できると思いますが、よくわかりません。または、ネストされた構造体でそれらを除外できますか?

0 投票する
1 に答える
167 参照

c++ - 私の値がビット フィールドで 2 で除算される理由

ビットフィールドとエンディアンで問題が発生しました...混乱しました。

ネットワークから取得したデータを解析する必要があります。送信されたデータはリル エンディアンです (boost::asio を使用しています)。

これについて説明してもらえますか

[出力]

00000000 00000001

00000010 00000000

0 投票する
1 に答える
215 参照

c++ - ゲームマップオブジェクト属性のビットフィールドとポリモーフィズム

この最適化の質問は、最後の日私を悩ませてきました。

私のプログラム(単純なローグライクゲーム)では、ビット単位のフラグを使用して、マップオブジェクトの属性を格納します。たとえば、それらがソリッドであるか、レンダリングされているかなどです。ただし、ポリモーフィズムを使用して適切な値を返すことはできました。

私の質問は、リンクリストループで使用した場合、他の方法よりも大幅に速いか遅いかということです。また、一方が他方よりも優れた実践ですか?

コードの例:

ありがとう。

0 投票する
2 に答える
151 参照

c++ - 構造体とポインタに関する質問

次のコードを考えてみましょう

このフラグメント

私は、たとえばこの場所の後に、このコードのいくつかの興味深い特徴を推測した後に追加しました

8を出力する書き込みprintf("%d\n",bitfields->x);を行うと、ポインタと参照を使用してiの値がxに付与されることを理解しているため、たとえば8を出力すると、bitfiled->y0が書き込まれるため、2番目の要素変数jを導入してbfstructerの新しいインスタンスを作成します。 jを参照してから、ステートメントbit-> yは9を書き込む必要があります。これは、私が理解しているように、順序定義ですが、なぜ0になるのでしょうか。このコードがどのように機能するか説明してください。私は英語を話せませんので、英語が下手でごめんなさい

0 投票する
5 に答える
4009 参照

c++ - ビットフィールドをパックするとき、VC++ は何をしていますか?

私の質問を明確にするために、サンプルプログラムから始めましょう:

出力は「8」です。これは、パックしたい 56 ビット (7 バイト) が 8 バイトにパックされていることを意味し、1 バイトを無駄にしているように見えます。コンパイラがこれらのビットをどのようにメモリに配置していたのか知​​りたくて、特定の値を に書き込んでみました&c

int main(int argc, char **argv)

予想どおり、Visual Studio 2010 を使用する x86_64 では、次のことが起こります。

移植性についてはしばらく忘れて、1 つの CPU、1 つのコンパイラ、および 1 つのランタイム環境に関心があると仮定してください。VC++ がこの構造を 7 バイトにパックできないのはなぜですか? それは言葉の長さですか?MSDNのドキュメント#pragma packは、「メンバーの配置は、n の倍数 [私の場合は 1] またはメンバーのサイズの倍数のいずれか小さい方の境界上にある」と記載されています。7 ではなく 8 のサイズを取得する理由を誰か教えてもらえますか?