给分,实数如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的机器将低位的写在前面所以再反一下