問題タブ [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.
c - このビットフィールドをクラックする方法は?
unsigned char変数の右端のビットに設定された位置から始まるビットでsetbits(x,p,n,y)
戻る関数を作成する必要があります(他のビットは変更されません)。x
n
p
n
y
たとえば、x = 10101010 (170 decimal)
and y = 10100111 (167 decimal)
and andn = 3
とp = 6
言う場合は、3ビットを取り除き、答えを得る位置にy (111)
配置する必要があります。x
10xxx010
10111010
この関数は、結果をバイナリ形式で出力する必要があります。
出力は次のようになります。
こんにちは私はビットフィールドでこの問題に遭遇しました。
どうすればいいですか?
c# - qtからc#の意味:構造体内の演算子の意味
古いqtファイルからC#に変換しようとしているコードのブロックがありますが、以下のユニオン内の構造体で何が起こっているのかが少しわかりません。':'が何をするのかわかりません...サイズを設定していると思いますが、これに関するドキュメントは見つかりませんでした。また、C#にはユニオンがないため、このようなものを変換するためのベストプラクティスは何ですか。ありがとうございました
php - FilterIterator ビットマスク (またはビットフィールド)
ビットマスクに苦労しています (またはビットフィールドですか?)。もうどうしたらいいのかわからない。
フィルタリング対象のフラグを受け入れる DirectoryFilterIterator を作成したいと考えています。そのためにこれらのビットを使用すると思いました:
aDOT
も a と見なされるDIR
ため、これら 2 つも区別できるようにしたいと思います。私が正しければ、次のようにできるはずだと思いました。
言い換えれば、これは.DIR
でない限り除外する必要がありDOT
ます。しかし、フィルタリングを(メソッドで)機能させる方法に完全に行き詰まっていますaccept
:
...特に、私が行っているすべての否定のせいで、私はちょっと迷っています。これを正しく機能させるにはどうすればよいですか?
c - ビットフィールドを(参照によって)関数に渡す方法は?
私の質問は、関数への参照によってビットフィールド インスタンスを渡す方法です。以下に示すようにこれを実行しましたが、関数 DAC_set_gain_code を入力すると、プロセッサは割り込みエラーをスローします。ビットフィールドを渡す限り、私がしていることは正しいですか?
DAC チップ上の 24 ビット レジスタを表すビットフィールド (以下を参照) を作成しました。
次のようにビットフィールドを初期化する関数があります。
実際にビットフィールドに入力する関数を以下に示します。
hal_DAC_set_gain_code_uni の関数プロトタイプは次のとおりです。
アドバイスをいただければ幸いです。
ありがとう。
go - Go: ビットフィールドとビット パッキング
C 言語のビットフィールドは、構造体内で任意の幅のフィールドを定義するための非常に便利な方法を提供します (移植性の問題については、しばらく気にしないでください)。たとえば、次の例は、いくつかのフィールドと「フラグ」を持つ単純な構造です。
#pragma ステートメントを追加すると、この構造体が 32 ビット ワードにパックされます (my_chunk
たとえば、スペースの節約とともに、ポインターのポインター操作が整列されるようになります)。
各フィールドへのアクセスは、構文的に非常に優れています。
言語の助けを借りずにこれを行う別の方法は、かなり醜く、ほとんどアセンブラーに委ねられます。たとえば、1 つの解決策は、アクセスするフィールドごとにビットシフト マクロを用意することです。
.. または大まかにそのようなもの (より形式的には、これを見てください)
質問は、go でビットフィールドを「実行」したい場合、そのためのベストプラクティスは何ですか?
c# - ビットフィールドに値を追加するための拡張メソッド (flags enum)
flags enum 変数に値を追加するためにこれを行う代わりに:
これを可能にする拡張メソッドを作成したいと思います。
可能?どのようにしますか?
struct - マイクロコントローラのビット フィールド
マイクロコントローラーについて学習していますが、ユニオンを使用して gpio ポートの個々のビットを設定する方法を理解するのに苦労しています。
上記を使用してバイトの個々のビットにアクセスしていますが、これを使用して次の方法で io ポート値を割り当てるにはどうすればよいですか?
_BYTE のタイプを割り当ててから、それにポートを割り当てたくありません。
MCF_GPIO_PORTDD は単なるメモリ アドレスです。
c - 符号なしビットフィールドのタイプ:intまたはunsigned int
C99標準のセクション6.3.1.1には、次のものが含まれています。
以下は、
int
またはunsigned int
が使用される可能性がある場合は常に、式で使用できます。
_Bool
[...]タイプ、、、、 またはint
のビットフィールド。signed int
unsigned int
int
が元のタイプのすべての値を表すことができる場合、値はint
;に変換されます。それ以外の場合は、に変換されますunsigned int
。
これは、符号なしビットフィールドの幅がの幅と等しい場合を除いて、unsigned int
ビットフィールドがにプロモートされることを意味しているように思われます。この場合、最後のフレーズが適用されます。int
int
私は次のプログラムを持っています:
そして、このプログラムを実行する2つのシステム(int
両方のシステムで32ビット)。1つのシステムは、このプログラムが1を出力し、もう1つのシステムは0を出力すると言います。私の質問は、2つのシステムのどちらに対してバグレポートを提出する必要があるかということです。(上記の抜粋のため、0を出力するシステムに対してレポートを提出することに傾倒しています)
c - ビットフィールドでビットエンディアンが問題になるのはなぜですか?
ビットフィールドを使用する移植可能なコードは、リトルエンディアン プラットフォームとビッグ エンディアン プラットフォームを区別しているようです。このようなコードの例については、Linux カーネルの struct iphdrの宣言を参照してください。ビットエンディアンが問題になる理由がまったくわかりません。
私が理解している限り、ビットフィールドは純粋にコンパイラ構造であり、ビットレベルの操作を容易にするために使用されます。
たとえば、次のビットフィールドを考えてみます。
d->f2
は、コンパクトで読みやすい言い方です(i>>1) & (1<<4 - 1)
。
ただし、ビット操作は明確に定義されており、アーキテクチャに関係なく機能します。では、なぜビットフィールドは移植可能ではないのでしょうか?