このページでは,基本情報技術者試験をはじめとする情報処理技術者試験で必須となる,算術演算と誤差についてシンプルにまとめています。算術演算では,加算・減算をはじめ,2の補数を用いた減算処理や,シフト演算による2ⁿ倍・1/2ⁿ倍の考え方を解説します。誤差については,桁落ち,情報落ち,丸め誤差,打切り誤差,オーバーフロー,アンダーフローなど,試験で頻出の用語を中心に説明しています。
算術演算とは(加算・減算・乗算・除算)
算術演算とは,加算,減算,乗算,除算,剰余,べき乗などの演算のことをいいます。
加算とは(2進数の足し算の仕組み)
2進数1桁の加算は,次のとおりです。
1バイトの符号付き整数の加算は,次のとおりです。
減算とは(2進数の引き算の仕組み)
コンピューターでは,負の数の表現に2の補数を使用します。2の補数を使用すると,減算を加算で処理することができます。1バイトの符号付き整数の減算は,次のとおりです。
2の補数の求め方については,「数値表現 -情報処理シンプルまとめ」を参照してください。
広告
乗算とは(2進数の掛け算の仕組み)
乗算は加算の繰り返しで処理できますが,繰り返す回数が多いと時間がかかります。そのため,乗算ではシフト演算も使用します。シフト演算とは,2進数のビット列を右や左にずらす操作のことをいいます。1ビット左にシフトすると2倍(=21倍),2ビット左にシフトすると4倍(=22倍),…となりますので,nビット左にシフトすると2n倍になります。
nビット左にシフト ⇒ 2n倍
論理シフトとは(符号なしビット列のシフト)
論理シフトは,符号ビットのないビット列に対して行うシフト演算です。
算術シフトとは(符号付きビット列のシフト)
算術シフトは,符号ビットのあるビット列に対して行うシフト演算です。符号ビット以外をシフトします。
左シフトのまとめ
| あふれた桁 | 空いた桁 | |
|---|---|---|
| 論理シフト 算術シフト | 無視 | 0を入れる |
2n倍以外の乗算の方法
左シフトにより2n倍は効率よく求めることができますが,3倍,5倍など2n倍以外の場合は,左シフトと加算で処理をします。たとえば,ある値の5倍は,5倍=(22+1)倍と考えることができますので、「2ビット左にシフトして元の値を加える」ことで求められます。
除算(2進数の割り算の仕組み)
除算の場合もシフト演算と加算を使用します。nビット右にシフトすると 12n 倍になります。
nビット右にシフト ⇒ 12n 倍
論理シフトとは(符号なしビット列のシフト)
論理シフトは,符号ビットのないビット列に対して行うシフト演算です。
算術シフトとは(符号付きビット列のシフト)
算術シフトは,符号ビットのあるビット列に対して行うシフト演算です。符号ビット以外をシフトします。
右シフトのまとめ
| あふれた桁 | 空いた桁 | |
|---|---|---|
| 論理シフト | 余り | 0を入れる |
| 算術シフト | 符号ビットと同じ値を入れる |
練習問題(加算・減算・乗算・除算)
問 各数値を1バイト符号付き2進数に変換して計算しなさい。
① 55+31 ② 31-55 ③ 3×8 ④ 8×3 ⑤ 31÷8
広告
誤差とは(計算で生じるズレの種類)
コンピューターではバイト単位で有限桁の数値を扱うため,円周率など無限桁の数値を扱う場合や計算過程などで誤差が生じることがあります。
絶対誤差と相対誤差(定義と例)
絶対誤差とは,実際の値と,測定値や演算結果との差のことをいいます。
相対誤差とは,実際の値に対する絶対誤差の割合のことをいいます。
絶対誤差 = | 測定値(演算結果)- 実際の値 |
相対誤差 = 絶対誤差実際の値
※ 絶対値…絶対値は,0からどれだけ離れているのかを表す値のことをいい,|を用いて表す。例)|3| = 3,|-2|=2
例)重さが100gの物体を測定した結果,99gであった。この場合の,絶対誤差と相対誤差は,
絶対誤差 = | 99 - 100 | = | -1 | = 1g
相対誤差 = 1100 = 0.01(1%)
となる。
誤差の種類
桁落ち(値が近い数同士の減算の誤差)
桁落ちとは,値がほぼ等しい2つの数で減算をしたときに有効桁数が減ってしまうことをいいます。
有効桁数(信頼できる桁数の考え方)
有効桁数とは,信頼できる桁数のことをいいます。
| 有効桁数 | |
|---|---|
| 1234 | 4 |
| 3.25 | 3 |
| 1.0 | 2 |
| 0.0125 | 3 |
| 0.1×105 | 1 |
| 0.100×105 | 3 |
情報落ち(大きい値+小さい値の誤差)
情報落ちとは,絶対値の大きい値と小さい値で加算や減算をしたときに,絶対値の小さい値が計算結果に反映されないことをいいます。
丸め誤差(桁を丸めることによるズレ)
丸め誤差とは,有限桁で表しきれない数値に対して,四捨五入や切り上げ,切り捨てをすることにより生じる誤差のことをいいます。
打ち切り誤差(途中で計算を切ることによるズレ)
打ち切り誤差とは,計算を途中で打ち切ることによって生じる誤差のことをいいます。
2,4,6,…のように数が列になったものを数列といいます。また、2+4+6+…のように数列の各値を順にプラス記号でつないだものを級数といいます。級数の各値は項といい、この項が無限にあるものを無限級数といいます。
オーバーフロー(表現範囲超過による誤差)
オーバーフローとは,計算結果が表現可能な桁数を超えた場合に生じる誤差のことをいいます。
アンダーフロー(極小値で表現できない誤差)
アンダーフローとは,計算結果が0に近くなりすぎて表現し切れなくなった場合に生じる誤差のことをいいます。たとえば,浮動小数点数では,0や0に近い数値を表現することはできません。
まとめ
今回は,算術演算と誤差についてシンプルにまとめてみました。算術演算では,加算・減算の仕組みや,2の補数,シフト演算による乗算・除算の考え方を理解することが重要です。また,誤差については,桁落ち,情報落ち,丸め誤差,オーバーフローなど,試験でよく出題される用語を確実に覚えるようにしましょう。計算結果だけでなく,「なぜその結果になるのか」を意識して学習することが,得点力アップにつながると思います。
理解が進んだら,過去問題等にもチャレンジしてみてください。



