職業訓練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