下图来源于唐朔飞老师的计算机组成原理,229页。
“可见浮点数由阶码j和尾数S两部分组成。阶码是整数,阶符和阶码的位数m合起来反映浮点数的表示范围及小数点的实际位置;尾数是小数,其位数n反映了浮点数的精度;尾数的符号Sf代表浮点数的正负。”
“一旦浮点数的位数确定后,合理分配阶码和尾数的位数,直接影响浮点数的表示范围和精度。通常对于短实数(总位数为32位),阶码取8位(含阶符一位),尾数取24位(含数符一位);对于长实数(总位数64位),阶码取11位(含阶符一位),尾数取53位(含数符一位);对于临时实数(总位数为80位),阶码取15位(含阶符一位),尾数取65位(含数符一位)。”
此处短实数对应java中基本数据类型的float,长实数对应double,临时实数在java中没有对应基本数据类型,原本我以为可以对应到c++中的long double,但是long double常取16字节,所以我也不确定,欢迎讨论。