[解決済み] C言語でフラグを削除するにはどうしたらいいですか?
2022-04-24 15:59:49
質問
いくつかのフラグを保持する変数があり、そのうちの1つを削除したい。しかし、どのように削除すればいいのかわかりません。
以下は、フラグを設定する方法です。
my.emask |= ENABLE_SHOOT;
解決方法は?
簡単な答え
を行いたい。 ビット単位のAND という演算を現在の値に対して行います。 ビット毎NOT の演算を行います。 フラグを解除したい . ビット単位のNOTは、すべてのビットを反転させます(すなわち、0 => 1, 1 => 0)。
flags = flags & ~MASK;
または
flags &= ~MASK;
.
長い回答
ENABLE_WALK = 0 // 00000000
ENABLE_RUN = 1 // 00000001
ENABLE_SHOOT = 2 // 00000010
ENABLE_SHOOTRUN = 3 // 00000011
value = ENABLE_RUN // 00000001
value |= ENABLE_SHOOT // 00000011 or same as ENABLE_SHOOTRUN
アンセットしたい値のBitwise ANDとBitwise NOTを実行したとき。
value = value & ~ENABLE_SHOOT // 00000001
実際にやっていること
0 0 0 0 0 0 1 1 (current value)
& 1 1 1 1 1 1 0 1 (~ENABLE_SHOOT)
---------------
0 0 0 0 0 0 0 1 (result)
関連
-
VSCodeでCプログラムを書くとエラーになる:ソースファイル "stdio.h" を開くことができない
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み] C言語で配列のサイズを決定するにはどうすればよいですか?
-
[解決済み] g++でC++11をコンパイルする
-
[解決済み】高放射能環境下で使用するアプリケーションのコンパイルについて
-
[解決済み】フラグの組み合わせのどれかが設定されているかどうかを確認するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
エラー: 宣言されていない識別子 'bool' の使用と C コンパイラでの問題点
-
警告:符号付き整数式と符号なし整数式の比較 [-Wsign-compare]
-
[解決済み] C 言語で const char* を char* に変換するには?
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] mallocの結果はキャストするのですか?
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み] 配列のすべてのメンバーを同じ値で初期化するには?
-
[解決済み] なぜ16進数には0xがつくのですか?
-
[解決済み] FortranはC言語よりも重い計算を最適化しやすいですか?
-
[解決済み] C言語でファイルサイズを取得するには?[重複]する