欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

IEEE浮点表示 (原发布 csdn 2018-10-14 10:29:33)

程序员文章站 2022-06-29 09:28:17
@ "TOC" 观察IEEE浮点表示 工作中遇到过整型转浮点型(union那种转换),碰到就看下书,过后就遗忘了。等过段时间又出现此现象,又重新拿起书本,这次记录了过程。然而一直等到今天才写出来,以防以后还用到,如果能帮助到你就更好了。 测试代码 思路 结果 参考资料 深入理解计算机系统(中文,原书 ......

@(ieee浮点表示)

观察ieee浮点表示

工作中遇到过整型转浮点型(union那种转换),碰到就看下书,过后就遗忘了。等过段时间又出现此现象,又重新拿起书本,这次记录了过程。然而一直等到今天才写出来,以防以后还用到,如果能帮助到你就更好了。

测试代码

double uu2double(unsigned word0, unsigned word1)
{
    union
    {
        double d;
        unsigned u[2];
    } temp;

    temp.u[0] = word0;
    temp.u[1] = word1;
    return temp.d;
}

IEEE浮点表示 (原发布 csdn 2018-10-14 10:29:33)

思路

1,3(小端模式)

//unsigned 4字节 
//  u[1]                                       u[0]
00 00 00 03                                 00 00 00 01

//double   8字节
//d
0000 0000 0000 0000 0000 0000 0000 0011 0000 0000 0000 0000 0000 0000 0000 0001

//ieee 浮点表示
/*
  v = (-1)^s * m * 2^e
  符号(sign) 负数(s=1)、正数(s=0)
  规格化的值(阶码域exp不全是0,也不全是1):   e = e-bias(2^(k-1)-1  单精度127,双精度1023),m = 1+f
  非规格化的值(阶码域exp全是0):             e = 1-bias(2^(k-1)-1  单精度127,双精度1023),m = f
*/
//符号s     阶码exp                         尾数f
    0     00000000000   0000 0000 0000 0000 0011 0000 0000 0000 0000 0000 0000 0000 0001
    
    非规格化 v = {2^(1-1023)*[(2^32+2^31+2^0)/(2^52)]} = 6.365987373390e-314#den

结果

IEEE浮点表示 (原发布 csdn 2018-10-14 10:29:33)

参考资料

深入理解计算机系统(中文,原书第三版)
IEEE浮点表示 (原发布 csdn 2018-10-14 10:29:33)
IEEE浮点表示 (原发布 csdn 2018-10-14 10:29:33)