首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

给分,实数如333.356是怎么存储的

2012-04-10 
给分,实数如333.356是如何存储的?Dimtemdbl1AsDoubletemdbl1333.356Put#fileNum3,,temdbl1我把333.256存

给分,实数如333.356是如何存储的?
'Dim   temdbl1   As   Double
'     temdbl1   =   333.356
'     Put   #fileNum3,   ,   temdbl1

我把333.256存入二进制文件,ultraEdit打开后十六进制是   91   AD   A6   43,也即二进制文件中是   10010001101011011010011001000011,请问put是按照什么原理把333.356转换成二进值,并存入文件中的?

[解决办法]
据我所知,数据文件在创建时,在物理的第一行就记录了数据的长度信息,它是按字节长度度取的,由程序拼接后换算的。
[解决办法]
单精度浮点数存储格式
s 指数 尾数
31 30-24 23-0

双精度浮点数存储格式
s 指数 尾数
63 62-52 51-0


333.356=1.302171875 * 2^8
1.302171875 转换成二进制是
1.0100110 10101101 10010001


s是符号位 这里是 0
阶以移码的形式存储。对于单精度浮点数,偏移量为127(7FH),而双精度的偏移量为1023(3FFH)。
指数是8,转成二进制,1000 加上偏移量01111111后为10001111。
尾数由1.0100110 10101101 10010001 去掉整数部分后是 0100110 10101101 10010001

写在一起就是
01000111 10100110 10101101 10010001(43A6AD91H)

intel的机器将低位的写在前面所以再反一下

热点排行