CONTENTS
固定小数点数
- データの最小単位をビットという。「0」と「1」のこと。
- 8ビット=1バイト
- 16ビット=1ワード(のことが多い)
- 符号なし固定小数点数は、0~255の256通りを表現
負数を補数を用いて表現する
メリットは、減算を加算で表現できること。補数は加えると0になる数。
反転させて、1を加算すると2の補数が作れる。
nビットの符号なし固定小数点数の有効桁数は、10進数で何桁になるのか
2n=10x(10をx乗すると、2nになる。桁数と〇乗は対応するから)
x=㏒102n
=n×㏒102(㏒102=0.301)
=n×0.301
㏒aM=n㏒aM
浮動小数点数の正規化
仮数部分の最上位の桁が0にならないようにすることを正規化という。誤差を少なくするため。
16ビット(符号S=1bit,指数E=4bit,仮数M=8bit)の浮動小数点数で、(0.375)10を正規化した表現は?
まず正の数なので、S=0。
(0.375)10=(0.011)2
仮数部の最上位桁が0にならないように正規化すると、
0.11×2-1となるから、M=11。
ー1は10進数なので、2進数に直す。正の1が(0001)2なので、これを反転させて1を加算すればよい。
0001を反転すると1110、これに1を加算すると(1111)2となる。したがって、E=1111。
以上より、S=0,M=11,E=1111なので、
0111 1110 0000 0000
補助単位
補助単位 | 数値 |
k(キロ) | 103 |
M(メガ) | 106 |
G(ギガ) | 109 |
T(テラ) | 1012 |
補助単位 | 数値 |
m(ミリ) | 10-3 |
μ(マイクロ) | 10-6 |
n(ナノ) | 10-9 |
p(ピコ) | 10-12 |
演算の誤差(浮動小数点数の正規化の段階で誤差が生じる)
- 丸め誤差:無限小数における四捨五入、切り上げ、切り捨てで発生。
- 桁落ち:絶対値が近い数値を減算すると、後ろの桁がごっそり落ちる。
- 情報落ち:絶対値の差が大きい数値の加減算をすると、大きい方に揃えたときに小数点が左に移動し過ぎて後ろの桁がはみ出て切り捨てられる。
桁落ち 36.6-36.5=0.1にならない
36.6-36.5=0.1
それぞれ正規化して減算すると、
36.6(0.10010010011…)×26
36.5(0.10010010000)×26
(0.10010010011…)×26ー(0.10010010000)×26=0000000000.11×26
0000000000.11×26を再び正規化すると、
0.11×26×2-9
=0.11×2-3=0.09375
当初の0.1から誤差が発生する。
情報落ち 100+0.05=100.05にならない
100+0.05=100.05
まず、普通に正規化をする。
100 (01100100.)×27
0.05(0.000011001100)×2-4
指数が7と―4で違っているので、そろえる。
通常、大きい方にそろえるので、0.05の小数点を操作する。27にするには、小数点を左に11個分移動させればよいので、
0.0000000000011001100×27となり、赤字部分がはみ出てしまい切り捨てられる。
すると、M=0になって、100+0=100になるため本来の答えと異なってしまう状況になる。正規化を挟むと情報が計算の途中で落ちてしまう。