シフト演算


シフト演算に関する話題である。シフト演算とは、シフト(桁ずらし)を行うことで演算を行うものである。
10進数の数値123を左に1桁シフトすると、1230となり10倍になる。同様に、2進数の数値110(=6)を左に1ビット分シフトすると、1100(=12)となり、2倍になる。2進数の数値110(=6)を左に2ビット分シフトすると、11000(=24)となり、4倍になる。つまり、2進数をnビット左にシフトすると、もとの数値の「2のn乗」倍になる。
1ビット左シフトするごとに2倍になるので、xを2ビット左シフトすると4倍の4xになる。
さらにこれにxを加えると
4x+x=5x
つまり5倍になる。

 例えば、x=0001(=1)として、1ビット左シフトすると、
y=0010(=2)となる。y=2xである。
xを2ビット左にシフトするとz=0100(=4)となる。z=4xである。
したがって、”レジスタの値を2ビット左にシフトして、xを加える”操作を行うと、
s=z+x=4x+x=5x
つまり5倍になる。

用語


あふれ(オーバーフロー):扱える数値範囲の最大値を超えてしまうこと。

スポンサーリンク