ITの基礎知識|ITパスポート・基本情報

この記事での学習内容 基本情報 応用情報

加減乗除,表現可能な数値の範囲,シフト演算,演算精度(誤差とその対策)など,コ ンピュータでの算術演算を理解する。

用語例: 論理シフト,算術シフト,桁落ち,情報落ち,丸め,打切り,オーバフロー(あ ふれ),アンダフロー,単精度,倍精度

シフト演算

引き算は2の補数を使うと足し算で同じ計算が出来ましたが、掛け算や割り算の場合はどうでしょうか。

例えば、10進数の123を10倍すると1230に、100倍すると12300になりますが、この計算は123の桁を10倍のときは1つ、100倍のときは2つ左ずらすことで簡単に求めることが出来ます。

逆に、10分の1にする場合は右に1つ、100分の1にする場合は右に2つずらすことで求めることが出来ます。

つまり、数値の桁を1つずつずらすことは、その数値の『基数倍』や『基数分の1』を計算するのと同じ効果があります。

このように桁を左や右にずらすことを『シフト』といいます。左にずらすことを「左シフト」、右にずらすことを「右シフト」といいます。

これらのシフト演算は掛け算や割り算の代わりに利用することもありますが、通常は2進数でビットバターンの特定の操作をしたり、ビットの状態を判定する際に利用します。

2進数のシフト演算

2進数の場合は、1桁左シフトすると数値は2倍、1桁右シフトすると、数値は2分の1となります。

桁あふれ(オーバーフロー)

コンピュータで数値を表現する場合、8ビットや16ビットなどあらかじめ表現範囲は決まっています。
その為、シフトを行うと表現の幅を超え、ビットが飛び出してしまい、正確に数値が表現できない場合があります。これを「桁あふれ」または「オーバーフロー」といいます。

シフトの種類

シフト演算には、符号ビットを考慮しない「論理シフト」と、符号ビットを考慮してそのままにする「算術シフト」があります。

論理シフト

論理シフトでは、符号ビットを考慮しません。最上位のビットも含めてシフトを行います。

シフトすることによって飛び出したビットは捨てられ、空いたビットには0が入ります。

シフトによって飛び出したビットに1が入っていた場合、桁あふれが発生し、正しい計算結果を得ることが出来ません。
左にシフトして桁あふれが発生した場合を「オーバーフロー」、右にシフトして桁あふれが発生した場合を「アンダーフロー」といいます。

左論理シフト

左論理シフトでは、左にNビットシフトすると、左側の上位Nビットが飛び出して捨てられます。その分、右側の下位Nビットが空き、そこには0が入ります。

これによって、元の数の2N倍の数となります。

但し、シフトによって飛び出したビットに1が入っていた場合、オーバーフローが発生し、正しい計算結果を得ることが出来ません。

右論理シフト

右論理シフトでは、右にNビットシフトすると、右側の下位Nビットが飛び出して捨てられます。その分、左側の上位Nビットが空き、そこには0が入ります。

これによって、元の数の1/2N倍の数となります。

但し、シフトによって飛び出したビットに1が入っていた場合、アンダーフローが発生し、正しい計算結果を得ることが出来ません。

算術シフト

算術シフトでは符号ビットを考慮して、先頭の最上位ビットはそのまま移動しません。最上位以外のビットだけをシフトします。

負の数を2の補数で表現する、符号付きの2進数の場合は算術シフトが使われます。

左算術シフト

左算術シフトでは、先頭の符号ビットは移動せず、それ以外のビットを左にシフトします。先頭の符号ビットが移動しない以外は論理シフトと同様です。

算術シフトの場合は、シフトによって飛び出したビットに「符号ビットと異なる値」が入っていた場合、オーバーフローが発生し、正しい計算結果を得ることが出来ません。

右算術シフト

右算術シフトでは、先頭のの符号ビットは移動せず、それ以外のビットを右にシフトします。
シフトによって左側に空いたビットには、符号ビットと同じ値が入ります。

但し、シフトによって飛び出したビットに1が入っていた場合、アンダーフローが発生し、正しい計算結果を得ることが出来ません。

数値データの形式と誤差

コンピュータでは扱う情報に応じて、数値の表現方法が使用される。

使用する数値データの形式により、精度、扱える範囲、データサイズ、誤差の生じやすさが異なってくる。

形式としては、整数型、浮動小数点型等がある。

誤差の種類

誤差の種類としては以下の様なものがある。

  • オーバーフロー、アンダーフロー:扱えるデータの範囲を超えた時の誤差。
  • 丸め誤差:無限小数の桁を区切った際に発生。
  • 情報落ち:絶対値の大きい数と小さい数を加減算した時、絶対値の小さい値が無視される。
  • 桁落ち:値がほぼ等しく、丸め誤差を持った数値同士の減算を行なった場合に有効数字が減少

 

この記事での学習内容 ITパスポート 基本情報 応用情報小数の表現を理解する。用語例: 固定小数点数,単精度浮動小数点数,倍精度浮動小数点数,仮数,指数小数の表現方法の種類小数の表現方法には固定小数点数と浮動小数点数があります。また、浮動小数点数には、単精度浮動小数点数と倍精度浮動小数点数などがあります。固定小数点数コンピュータで負の数を含む整数の数値データを扱うときは、固...

Read more...

この記事での学習内容 ITパスポート 基本情報 応用情報負の数の表現(補数表現)を理解する。用語例: BCD (Binary Coded Decimal:2 進化 10 進),パック 10 進数2進数における表現の問題点整数の場合は桁数が多くなる程度ですが、小数の場合はそもそも表現できる数が少ないため、どうしても「誤差」が生じてしまいます。例えば、10進数の 0.75 は、2進...

Read more...

基数

2017.08.21
この記事での学習内容 ITパスポート 基本情報 応用情報2 進数,8 進数,10 進数,16 進数,n 進数の表現,2 進数と 10 進数などの基数の変換手法 を理解する。記数法私たちが一般的に数値を扱うときには0~9までの数字を使う、「10進法」を用いています。 一方で通信やコンピュータの分野では「2進法」「8進法」「16進法」などが使われます。10進法では0~9までの数字を...

Read more...

なぜ、コンピュータの歴史にふれるのか?それは、基本情報処理技術者のシラバスとして提示されている、『基礎理論』の「離散数学」や「応用数学」といった科目をなぜ学ぶ必要があるのか?を理解する助けになるからである。『離散数学』『応用数学』が試験範囲として設定されている意義は、 ・コンピュータの中では、情報は「0」か「1」かになる ・コンピュータは人間が組み込んだプログラム(=アルゴリズム)...

Read more...

離散数学とは

2017.08.08
離散数学とは離散数学(りさんすうがく、英語:discrete mathematics)とは、原則として離散的な(言い換えると連続でない、とびとびの)対象をあつかう数学のことである。有限数学あるいは離散数理と呼ばれることもある。 グラフ理論、組み合わせ理論、最適化問題、計算幾何学、プログラミング、アルゴリズム論が絡む[1]応用分野で、その領域を包括的・抽象的に表現する際に用いられることが...

Read more...