コンピュータの小数

固定小数点数

固定小数点数とは、コンピュータにて整数部のビット列と小数部のビット列とで表された数である。
ただし表せる数は分母が2の累乗のものに限る。3は分数の形では3/(2^0)と表せるので分母が2の累乗であり、0.75は分数で3/(2^2)と表せるので分母が2の累乗である。
名前の通り小数点が動かない。
整数部4ビットと小数部4ビットで表される場合、3.25は8ビットだと00110100(小数点付きだと0011.0100)と表される。

 

浮動小数点数

浮動小数点数とは、コンピュータにて指数部のビット列と仮数部のビット列とで表された数である。
指数部のビット列の数値を変えることで小数点が動く。
固定小数点数と同じく、表せる数は分母が2の累乗のものに限る。

浮動小数点数は、0.仮数×2^指数と表す。1.5(2進数で1.10)は、仮数を2進数の11にして指数を1にして表す。3(2進数で11.0)は、仮数を2進数の11にして指数を2進数の10にして表す。
10進数の0.1は、分母が2の累乗でないのでコンピュータでは近い値を当てる(丸める)。
C言語にて浮動小数点数の変数型にfloat(単精度)とdouble(倍精度)があり、どちらもビットの数が非常に多い。2の累乗でない数を正確に表すため。
floatよりもdoubleの方がビットの数が多い。
なのでfloatよりもdoubleの方が分母が2の累乗でない数を正確に表せる。