はじめに
こんにちは!
久しぶりの投稿になります(汗)
今回は補数や固定小数点について勉強していきます。
1. 補数
1と0しか使えないコンピュータの内部で,負数を表現する方法の一つとして、補数表現があります。
補数は、「ある数」を「決められた数」にするために。「補う数」です。
N進数には「N-1の補数」と「Nの補数」があり、「ある数」にIN=1の補数』
を補うと、与えられた桁数の最大値となり。「ある数」に「Nの補数」を補うと,与えられた桁数の次の桁に桁上がりします。
10進数には、「9の補数」と「10の補数」の二つの補数があります。例えば、10進数3桁で表現する場合は、123の「9の補数」は876,「10の補数」は877です。
また、2進数には、「1の補数」と「2の補数」の二つの補数があります。例えば、
2進数4ビットで表現する場合は、0101の「1の補数」は1010.12の補数」は1011です。
コンピュータ内部では,演算回路を簡単にするために..2の補数を使って負数を表現しています。補数を使うことで,減算を加算で処理できます。
画像引用元:https://medium-company.com/2%E3%81%AE%E8%A3%9C%E6%95%B0/
まとめると
1の補数→ビットを反転する
2の補数→1の補数に1を加える
2.固定小数点
コンピュータ内部における数値の表現方法として、固定小数点と浮動小数点があります。
2進数で小数点を扱う際に何ビット目(何桁目)が小数点になるかあらかじめ決めておく方法です。
固定小数点は、小数点の位置を決められた場所に固定して表現する形式で、整数型として扱う場合は、最右端の右側に小数点があります。
加算や減算をするときもこの形式に合わせた数を利用して計算します。また、一番左のビット(最上位ビット)を符号ビットとすることで、負数も表現できます。
固定小数点数の場合、小数点の位置がきまっているためデータの解釈は簡単になるのですが、その代わり、表現できる数値の範囲が限られてしまいます。
3.浮動小数点
固定小数点表示よりも効率的に小数を扱う方法として、一般的にコンピュータでは浮動小数点表示が用いられます。
浮動小数点は、実数(小数点の付いた数)を扱う場合に使用する形式です。指数を使うことで,大きな数や小さな数を固定小数点よりも少ないビット数で表現できます。
ただし。例えば10進数123は、指数を使うと何通りも表現できてしまう(浮動は、小数点がふわふわ浮いて移動するイメージからさている)ため、あらかじめどのような形式で表現するかを決めておきます。
浮動小数点の形式にはいくつもの種類があり,試験では簡路化されたオリジナル的なものも出題されるため、問題の指示のとおり表現します。
小数の位置を固定せずに表現するため、表し方は 10 進数の指数の表現のようになります。
以下のように表します。
4.誤差
電車なら8行、12布などのように、表現できる桁の上限が決まっています。
コンピュータ内部でも、数値を指定されたビット数で表現しているために,真の値と表現する値との間に差が発生します。これを誤差といい,次のようなものがあります。
桁あふれ誤差は、演算結果がコンピュータの表現できる範囲を超えることで発生する差です。表現できる範囲を超えることをオーバフローといいます。浮動小数点では限りなく0に近づいて表現しきれなくなり発生するアンダフローがあります。
例えば4桁まで表示できる電卓があるとします。
この電卓で「9999」よりも演算結果が大きい場合の誤差が「桁あふれ誤差(オーバーフロー)」になります。
逆に「0.00…01」のように小さすぎる(0に近い数)場合の誤差が「アンダーフロー」になります。
桁あふれ誤差で有効桁の範囲の最大値(上限)を超えることを「オーバーフロー」
桁あふれ誤差で有効桁の範囲の最小値(下限)を超えることを「アンダーフロー」
丸め誤差は、指定された桁数で演算結果を表すために,切捨て・切上げ・四捨五入などを行うことで発生する誤差です。
例えば、10進数「0.1」を2進数に変換しようとした場合、
0.0001100110011…
と終わりが見えない無限小数となってしまうため、表現できる有効な桁が小数点以下8桁だとすると、
0.00011001
と、表現できる有効桁以降を切り捨てて表示します。
表現できる有効桁以降の値を四捨五入・切り上げ・切り捨てなどをして削った(丸めた)時、本当の数値と削った数値との間に生じる誤差が「丸め誤差」になります。
桁落ち誤差は、絶対値がほぼ等しい数値の間で,同行号の減算や異行号の加算をしたときに,有効桁数が減ることで発生する誤差です。
情報落ち誤差では、絶対値の差が非常に大きい数値の間で加減算を行ったときに、絶対値の小さい数値が計算結果に反映されないことで発生する誤差です。
浮動小数点数どうしを加減算するとさは、指数を揃える必要があります。指数は大き
い方に揃えます。
打切り誤差は、浮動小数点数の計算処理の打ち切りを,指定した規則で行うことに
によって発生する誤差です。
例えば、円周率は314159.と続きますが、計算処理を打ち切って3.14とすることによって発生します。
まとめると
・桁あふれ誤差は表現できる範囲を超えることで発生する誤差
・丸め誤差切り捨て、切り上げ、四捨五入することで発生する誤差
・桁落ち誤差有効桁数が減少することで発生する誤差
・情報落ち誤差小さな数値が計算結果に反映されないことで発生する誤差
・打切り誤差計算処理を打ち切ることで発生する誤差
今回は以上となります。
この範囲は個人的に復習して理解を深めていきたいと思います。
エンジニアファーストの会社 株式会社CRE-CO Y.K