1.
符号位 阶码 尾数 长度
float 1 8(2^7-1 = 127) 23 32
double 1 11(2^10-1 = 1023) 52 64
2.
将一个十进制的整数部分和小数部分分别处理.然后将小数点前后两部分连起来再取掉最前面的1,这就成了尾数.
这里需要说明的是:
对于Float型:
a: 从转换成的二进制数(包括整数部分和小数部分)的总位数为24位(不包含小数点占的位置,不足部分后面补0);
b: 把小数点左移的位数x加上偏移量y = x + 127;然后将y再转化为二进制,这时的二进制数就是阶码;
c: 对于正数符号位(在第一位,也即在最前面添一个位数表示符号位)为0, 负数为1
d: 然后把符号位,阶码和尾数连起来.
e: 注意:尾数的第一位总是1,所以规定不儲存这一位的1,只取尾数后面的23位;
对于Double型:
a: 从转换成的二进制数(包括整数部分和小数部分)的总位数为53位(不包含小数点占的位置,不足部分后面补0);
b: 把小数点左移(或右移)的位数x(或-x)加上偏移量y = x + 1023;然后将y再转化为二进制,这时的二进制数就是阶码;
c: 对于正数符号位(在第一位,也即在最前面添一个位数表示符号位)为0, 负数为1
d: 然后把符号位,阶码和尾数连起来.
e: 注意:尾数的第一位总是1,所以规定不儲存这一位的1,只取尾数后面的52位;