職業訓練39日目 H8マイコン入門(マイコンでのデータ表現)
「2進数」「16進数」「ディジタル回路(の前半)」はサックリと割愛。
マスク操作
ビットを0にマスクする
0でAND演算を行う。
例)下位4ビットを0にマスクする。
11011001 元データ AND)11110000 マスクデータ = 11010000
ビットを1にマスクする
1でOR演算を行う。
例)上位2ビットを1にマスクする。
10010110 元データ OR)11000000 マスクデータ = 11010110
個々のビットの状態を調べる
調べたいビットを1、他のビットを0でAND演算を行う。
例)4番目のビットの状態を調べる。
10011101 元データ AND)00001000 マスクデータ = 00001000
シフト操作とローテート操作
算術シフト
- 左シフト
→最上位ビット(MSB)を符号情報として、消失しないようにCフラグへ格納する。
最下位ビット(LSB)には、0を代入する。
C←101100101←0 1←011001010
- 右シフト
→符号を変化させないよう最上位ビット(MSB)は移動しない。
空いたビットには符号と同じビットが入る。
101100101→C 110110010→1
論理シフト
符号ビットを考慮せずにシフト操作を行う。
- 左シフト
C←101100101←0 1←011001010
- 右シフト
0→101100101→C 010110010→1
ローテイト操作
(キャリーなし)ローテート
- 左ローテート
→MSBから出たビットデータはLSBに移動する。
Cフラグにも反映される。
C←10100110←MSB 1←01001101
- 右ローテート
→LSBから出たビットデータはMSBに移動する。
Cフラグにも反映される。
LSB→10100110→C 01010011→0
キャリーつきローテート
Cフラグを移動ビットに含めてローテートを行う。
- 左ローテート
0←10100110←C 1←01001100
- 右ローテート
C→10100110→1 11010011→0