当前位置: 代码迷 >> 汇编语言 >> 36.625如果定义成双字节,那么在内存中是什么样的?解决思路
  详细解决方案

36.625如果定义成双字节,那么在内存中是什么样的?解决思路

热度:2173   发布时间:2013-02-26 00:00:00.0
36.625如果定义成双字节,那么在内存中是什么样的?
DATE1 DD 80000000H,36.625  

书上是这样的:
  -----
 |00H|
 |00H|
 |00H|
 |80H|
 |00H|
 |80H|
 |12H|
 |24H|
  -----
十进制的 36.625 的十六进制为 24.AH,怎么存成了 24H,12H,80H,00H?
如果把  36.625 定义成字类型,是不是 24H,0AH?

------解决方案--------------------------------------------------------

    是42128000,LZ可能看花眼了
    还原一下试试:

    42128000 == 
    0   10000100  00100101000000000000000
    ↓    ↓          ↓
    正数  阶码        尾数
         ↓转换回来      ↓(前面加隐含的1.)即
     10000100-1111111   1.00100101000000000000000
         ↓
        101
         ↓
         5(十进制)

    综合上面可知,这个数的二进制形式就是:
    1.00100101000000000000000 ×2的5次方
    由上式,将小数点向后移动5位,这个数的二进制值是:
         100100.101
          ↓  ↓      
    十进制是: 36  5/8

------解决方案--------------------------------------------------------
[Quote=引用:]
是42128000,LZ可能看花眼了
还原一下试试:

42128000 == 
0   10000100  00100101000000000000000
↓    ↓          ↓
正数  阶码        尾数
↓转换回来      ↓(前面加隐含的1.)即
10000100-1111111   1.00100101000000000000000

101
……
[/Quote

正确!
------解决方案--------------------------------------------------------
IEEE 754 有定义的。
自己搜索一下相关的资料吧。
------解决方案--------------------------------------------------------
2楼解释的很清楚。给出几个常用的浮点数表示。
0.0:0000 0000
0.5:3F00 0000
1.0:3F80 0000
  相关解决方案