フラグ (コンピュータ)

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

コンピュータ関係でいうフラグ(flag)とは、真か偽か0か1かマイナスが付くか付かないか、などといった情報量が1ビットの値(情報)を状態として保持する、レジスタ変数などのことである。

操作[編集]

」の意の英語 flag であり、旗を連想させるような「上げる・立てる」←→「下ろす・降ろす・倒す」といった表現が使われることもあるが、他に「落ちる・落とす」などその他の表現が使われることもある。

以上の他に「トグルする」という操作がある。押しボタン型スイッチに見られる「プッシュ・プッシュ型」のように、操作の度に状態が交互に切り替わるような操作である。慣れないプログラマなどはこの操作を条件分岐を使って書いてしまいがちだが、論理否定の演算子や x = 1 - x といった式で簡潔で書けることに習熟すべきである。

またフラグが集まったワード等の一部を操作するにはビットマスクを使う。

ハードウェア[編集]

ステータスレジスタ[編集]

例: Z80ステータスレジスタ

  • Sフラグ: 計算結果の正負
  • Zフラグ: 計算結果がゼロかどうか
  • Hフラグ: 4ビットで表しきれないとき1(パックBCD向けのキャリーフラグ)
  • P/Vフラグ: パリティ・オーバーフロー
  • Nフラグ: 減算のとき1、加算のとき0
  • Cフラグ: 8ビットで表しきれないときに立つキャリーフラグ

ソフトウェア[編集]

ブーリアン型[編集]

フラグのための変数の型はブーリアン型になる。言語によっては条件式などにはブーリアン型しか許されないこともある。

C言語(C89)などブーリアン型が無い言語もある。そういった言語では、多くが固定長整数型ないしは数値型[1]で代用されるという仕様としている。C言語の場合、0が偽、0以外(非ゼロ)が真として扱われる。またC言語では真の代表値は1なので、たとえば !0 は1になる。このような慣習は言語によって大きく異なることが多く、例えばUnixシェルでは0が真であるとか、他には真が -1 という言語もある(真を -1 にすると、論理否定とビット反転が兼用できるという利点がある)。

ビットフィールド[編集]

脚注[編集]

  1. ^ AWKやJavaScriptなど、特に整数型すら持たず1種類の数値型しかないような言語の場合。

関連項目[編集]