IEEE浮点表示 (原发布 csdn 2018-10-14 10:29:33)
程序员文章站
2023-11-13 23:23:46
@ "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; }
思路
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
结果
参考资料
深入理解计算机系统(中文,原书第三版)