FromNandの日記

自分的備忘録

【C言語】浮動小数点数の内部表現について

floatは符号部1bit,指数部8bit,仮数部23bit
doubleは上記の順番に1bit, 11bit, 52bit



また、指数部にはバイアスがかかっておりfloatは-127、doubleは-1023
仮数部はアドレスが高位なほうから0.5, 0.25, 0.125....と2のマイナスの乗数で表される
IEEEという団体で規格が決定されているみたい。



例) 1.5 の場合

float 0(符号部) 01111111(指数部) 1000000(仮数部) 00000000 00000000
double 0(符号部) 01111111111(指数部) 1000 00000000 00000000 00000000 00000000 00000000 00000000(仮数部)

 

【特殊な場合】

・指数部がすべて0の場合は0を示す
・指数部がすべて1の場合はNaNを示す
・指数部がすべて0で仮数部が0でない場合は、(-1) ^ 符号ビット * (仮数部のビット) * 2 ^ (-127)
 

参考サイト:http://www.cc.kyoto-su.ac.jp/~kbys/kiso/number/fraction.html