算術シフト | Programming Place Plus 用語集

トップページ用語集

名称

解説

最上位ビットを変化させずに行われるシフト演算のことです。

数値データの最上位ビットは、符号ビットとして機能している場合があるので、符号ビットを破壊して、符号が変わってしまわないようにするために用いられます。

左方向に算術シフトする場合、最上位ビットを無視して、残りのビットだけをシフトし、空いた右端のビットには 0 が入ります。元のビット列11000111 だとして、左方向に 3ビット算術シフトすると 10111000 になります。

右方向に算術シフトする場合は、最上位ビットを無視して、残りのビットだけをシフトし、空いたビット(最上位ビット付近)には、最上位ビットと同じものが入ります。元のビット列が 11000111 だとして、右方向に 3ビット算術シフトすると 11111000 になります。


算術シフトに対して、最上位ビットを特別あつかいせずにシフトする方法を、論理シフトといいます。さきほどと同じ例を論理シフトに置き換えると、左シフトの例では 00111000 になり、右シフトの例では 00011000 になります。いずれも最上位ビットが代わってしまっており、これが符号ビットであるとしたら、シフト演算によって符号が変化してしまったことになります。


参考リンク

更新履歴


用語集のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る