Posted on 2012-09-01 20:33
常康康 阅读(142)
评论(0) 编辑 收藏 引用
IEEE浮点标准用 V = (-1)^5 * M * 2^E 的形式表示一个数。 ————摘自深入理解计算机操作系统 单精度 双精度 符号位(S) : 1 1 指数为(E) : 8 11 数据位(D) : 23 52 58.25f 的16进制:
① 十进制转为二进制表示。

111010.01
②小数点向做移动到最高位,记录小数点移动位数和数据位,丢弃首位1。
1.1101001 * 2 ^ 5
小数点移动:5
数据位为:1101001
③小数点移动位数加 偏移量127 转二进制 并 加符号位。
5 + 127 = 132
加偏移转二进制 :10000100
加符号位 负数(1) 整数(0) :0 10000100
S EEEEEEEE
④指数位加到数据位前面。
符号位:0
指数为:10000100
数据位:1101001
0 10000100 1101001
S EEEEEEEE MMMMMMMMMMMMMMMMMMMMMMM
1 8 23
⑤补够32位不够末尾加0,4位一组转16进制。
0 10000100 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
S E MMMMMMMMMMMMMMMMMMMMMMM
1 8 23
0100 0010 0110 1001 0000 0000 0000 0000
4 2 6 9 0 0 0 0
结果为:
00 00 69 42
验证:
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int main(void)
5 {
6 float fNum = 58.25f;
7
8 printf("fNum : %08X", &fNum);
9
10 system("pause");
11
12 return 0;
13 }