算術シフトとは? わかりやすく解説

Weblio 辞書 > コンピュータ > IT用語辞典 > 算術シフトの意味・解説 

算術シフト

読み方さんじゅつシフト

算術シフトとは、符号付き2進数ビットパターンを右、あるいは、左へずらすことである。

算術シフトでは、符号ビット除いたビットパターンをずらし、符号ビットはずらさない。あふれたビット切り捨てて空いた部分「0」挿入する例えば、符号付き2進数の「11110111」(10進数で-9)を左へ1ビットシフトした場合は「11101110」(10進数で-18)になる。

算術シフトでビットパターンを右へずらす場合あふれたビット切り捨てるが、空いた部分には符号ビットと同じ値を挿入する例えば、「10110100」(10進数で-76)を右へ1ビットシフトした場合は「11011010」(10進数で-38)となり、「00110100」(10進数52)を右へ1ビットシフトした場合は「00011010」(10進数26)になる。


算術シフト

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/03/30 05:01 UTC 版)

ビット演算」の記事における「算術シフト」の解説

算術シフトでは、右シフトにおいて、最上位ビット2の補数表現であれば符号ビット)は保存される。左シフトでは、空くビット位置には、ゼロが入る。このシフトではあふれたビットは単に消える(プロセッサ実装によってはフラグに入るものもある)。下記の例は 4ビットレジスタの場合である。 0111 LEFT-SHIFT= 1110 1011 RIGHT-SHIFT= 1101 前者の例は、左端の0はあふれて消えあらたな0が右端入れられている。後者の例は、右端の1はあふれて消え符号ビット1が左端コピーされている。あふれたビットは、多く場合キャリーフラグにセットされる。マルチプルシフトは、シングルシフトをくりかえしたものと同じ結果になる。 0111 LEFT-SHIFT-BY-TWO= 1100 C/C++では、左シフトと右シフトは "<<" と ">>" で表されるシフトする幅は右オペランドにより指定できる。#注意事項参照x = y << 2; この例では、y を2左に算術シフトした結果を x に格納する1ビットの左算術シフトは2倍するのと同じである。1ビットの右算術シフトは、値が非負であれば2で割ってあまりを捨てるのと同じである。 負の値を右に算術シフトした場合は、シフトしてあふれたビットが1なら(複数シフト場合は、あふれたビット中に1がある場合には)、結果に1を足せば、2または2のべき割ってあまりを捨てるのと同じになる

※この「算術シフト」の解説は、「ビット演算」の解説の一部です。
「算術シフト」を含む「ビット演算」の記事については、「ビット演算」の概要を参照ください。

ウィキペディア小見出し辞書の「算術シフト」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「算術シフト」の関連用語

算術シフトのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



算術シフトのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2024 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリ算術シフトの記事を利用しております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのビット演算 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS