●算術シフト
算術シフトは、正負を考慮した数値データとしてデータを扱うときに利用します。
固定小数点数について、符号ビットを除いたビット列を移動させる演算です。
算術左シフトでは、符号ビットを除くビットの内、左から1番目を取り除き、右から1番目に「0」を挿入します。
一般的に左に n ビットシフトすると、2^n倍になります。
算術右シフトでは、符号ビットを除くビットの内、右から1番目を取り除き、左から1番目に符号ビットと同じ値を挿入します。
一般的に右に n ビットシフトすると、2^-1(1/2n)倍になります。
●論理シフト
論理シフトでは、数値データとして扱うのではなく、ビットの並びとしてデータを扱うときに利用します。
データのビット列を全て移動させ、空いた桁に「0」を挿入します。
論理左シフトでは、左から1番目を除き、右から1番目に「0」を挿入します。
論理右シフトでは、右から1番目を除き、左から1番目に「0」を挿入します。
●誤差
丸め誤差
コンピュータでは無限小数を扱うことが出来ないので、四捨五入や切捨て、切り上げなどによって有限桁数とすることが行なわれる。このとき、実際の値と有限桁数に丸めた結果との差を、丸め誤差という。
けた落ち
ほぼ等しい数値同士の引き算、絶対値がほぼ等しく符号が異なる2つの数の加算を行なった場合、有効桁数が急激に減少することがある。このような現象をけた落ちという。
情報落ち
大きな値と小さな値の加減算を行なった場合に、桁を揃えることによって、仮数部に入りきらない小さな値の情報の一部が落ちてしまうことがある。このような現象を情報落ちと言います。情報落ちを避けるためには、絶対値の小さな数値から順に加減算を行なう。
「情報処理教科書 基本情報技術者2011年版」を参考に作成いたしました。
コメント