IEEE 浮点表示

Posted on 2012-09-01 20:33 常康康 阅读(131) 评论(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位不够末尾加04位一组转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 }


 


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理