情処用語辞典

算術シフト

説明

シフト演算の一種で、それぞれのビットを左または右にずらす操作です。

左にずらす操作を左シフトと言い、左算術シフトは空いたビットに0を入れます。ただし符号ビット(最上位ビット)は変化しません。

右にずらす操作を右シフトと言い、右算術シフトは空いたビットに符号ビットと同じ値を入れます。

余談

左算術シフトの最上位ビットについての説明はサイトによっては違う説明になっていることがあります。有名どころではWikipadiaのArithmetic shift(日本語がなかったので英語版です)がそうなのですけど、左論理シフトと同じ操作になっています。

なぜこのような食い違いが出るのかの正確な理由は分かりませんが、情報処理技術者試験の世界での左算術シフトはCASLⅡのSLA(Shift Left Arithmetic)の仕様が元ネタで、Wikipediaの算術シフトはFederal Standard 1037Cが元ネタになっていてそれぞれの定義が違うからみたいです。

ちなみに、x86のSAL(Shift Arithmetically left)とかZ80のSLA(Shift Left Arithmetic)を見るとWikipediaの説明に書かれている操作になっているようです。

関連用語