浮点数内存如何存储的

 

类型

存储位数

总位数

偏移值
(offset)

数符(S)

阶码(E)

尾数(M)

短实数(float)  

   1 

   8

  23

   32

127

长实数(double)

   1

   11

  52

   64

1023

 

N (10) = 123.456,

换算成二进制表示:

N (2) = 1111011. 01110100101111001

= 1. 11101101110100101111001(...) * 2^6

   那么E – 127 = 6;  E = 127 + 6 = 133(10) = 10000101(2)

M = 111 0110 1110 1001 0111 1001 (省略了最高数字位1, 23bit)

   组合起来就是:

S          E                        M

0        10000101      111 0110 1110 1001 0111 1001

================================================

   4bit一间隔:

0100   0010   1111   0110   1110   1001   0111   1001

4          2          F           6         E           9          7        9

=====================================================

数据存储方式

====================================================

补充:

十进制小数转二进制

如:0.625=(0.101)B

0.625*2=1.25======取出整数部分1

0.25*2=0.5========取出整数分0

0.5*2=1==========取出整数部分1

再如:0.7=(0.1 0110 0110...)B

0.7*2=1.4========取出整数部分1

0.4*2=0.8========取出整数部分0

0.8*2=1.6========取出整数部分1

0.6*2=1.2========取出整数部分1

0.2*2=0.4========取出整数部分0

0.4*2=0.8========取出整数部分0

0.8*2=1.6========取出整数部分1

0.6*2=1.2========取出整数部分1

0.2*2=0.4========取出整数部分0

posted @ 2013-10-02 11:51  blackBox  阅读(308)  评论(0编辑  收藏  举报