学習日記

自分用に学んだことを書いていきます

C言語を学ぶ上での基本知識−4

C言語を学ぶ上での基本知識−4

(フラグ、ビットシフト)

 

 

前回

 

 

hima-3.hateblo.jp

 

 

 

最初から

hima-3.hateblo.jp

 

フラグ

前回は入力と出力の関係について解説しましたが、

より複雑な制御のためには論理演算の情報を記録する必要があり

ソフトウェア的な言い方でこれを『フラグ』と言います。

 

複数のフラグをまとめて『フラグレジスタ』『ステータスレジスタ』と呼ばれます。

 

レジスタ・・・演算など一時的な目的で記録するもの

 

代表的なフラグ

 

ゼロフラグ

演算結果が0なら1として記憶

それ以外は0として記憶する

 

キャリーフラグ

演算結果がレジスタに収まりきれない時に1として記憶

 

この2つが重要なフラグです。

 

そのほかフラグ

 

サインフラグ

最上位ビットが『負の値』を示す。

その際にサインフラグも1を記憶する

 

バリティフラグ

演算結果に含まれる1のビット数が偶数の際に1を記憶

 

オバーフローフラグ

符号付き演算で計算範囲を超えた際に1を記憶

 

ハーフキャリーフラグ

演算の補正に利用される

 

 

 

 

ビットシフト

ビットのon/offの並びを横にずらしてくこと

 

右シフト

0110→011

 

10進数では6が3になり2分の1になる

 

左シフト

0110→110

 

10進数では6が3になり2倍になる

 

論理シフト

シフトの方向に関係なくありふれたビットはキャリーフラグに格納される

 

算術シフト

 

右算術シフトの場合左端ビットは不変

左算術シフトの場合左シフト

 

 

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

おすすめ参考書

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

 
価格:2970円(税込、送料無料) (2020/4/23時点)

楽天で購入

参考HP

IT用語辞典 e-Words

 

情報に誤りがある場合コメントにてお知らせいただけると幸いです。