問題タブ [bitflags]
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# - フラグ付きの列挙型に 2 の累乗以外の値を追加してもよろしいですか?
以下の私の列挙では、私の意図は、Scheduled
「ILT | ヴィルト | HVILT'. この種の列挙型を作成するためのガイドラインでは、明らかに 2 のべき乗を使用することを誰もが提案していますが、実際Scheduled
にこれらの他の値の組み合わせを意味する場合、これはうまく機能するはずですよね?
または、これを行うときに注意すべき落とし穴はありますか?
c# - [Flag] Enum 検証が失敗するのはなぜですか?
HasFlags の仕組みを根本的に誤解していますか? このコードが失敗する理由がわかりません。
このコードは値を取り、Enum の値の有効な組み合わせであるかどうかを判断します。
Enum 値の 2 つのサブグループは、他のメンバーの OR によって識別されます: JustTheMonths と Exclusives。JustTheMonths は Enum で宣言され、Exclusives は検証メソッドに組み込まれています。
このメソッドに 1 または 2 (未割り当てまたは不明) を渡すと、有効なものとして正しく識別されます - 排他的ですが、JustTheMonths のメンバーではありません。
しかし、このコードに 4 を渡すと、セット全体のメンバーとして正しく識別されますが、サブグループ JustTheMonths のメンバーとして誤って識別されます。
ここで何が間違っていますか?なぜ私のコードは 4 が (8 | 16 | 32 | 64 | 128 | 256 | 512 | 1024 | 2048 | 4096 | 8172 | 16344) のメンバーであると考えるのですか?
c - ビットフィールドのコレクションに少なくとも 1 つのビットが設定されていることを検出する
私のプログラムでは、次のような C ビットフィールド構造を持っています。
ここで、少なくとも 1 つのフラグが上記の構造に設定されていることを確認したいと思います。設定されている場合は、何らかの操作を行います。
ビットごとにチェックすることでこれを行うことができますが、フラグの構造が十分に大きいため、組み込みアプリケーションではプロセッサに負荷がかかります。operation & 0xFF
検出する( ) などの操作を探しています。
誰でもCでこれを行う方法を提案できますか??
c - フラグが整数に設定されているかどうかを確認する最も効率的な方法
次のように定義された11個のフラグがあります。
一部の関数では、これらのフラグのいずれかを含めることができる整数を作成します。たとえば、次のようになります。
これは、特定のレジスタに特定のビットを設定するために設定されているフラグをデコードする必要がある関数に渡されます。私の質問は、どのフラグが設定されているかを確認する最も効率的な方法は何ですか。現在、次のような場合は11あります。
PS これは 8 ビット マイクロコントローラ用です。