请问熟悉浮点计算的朋友们,如何把一个数字变成4字节浮点数?原说明中是这样说的,10000.84 ,整数部分转换为长整形16进制为00002710H,这个倒是可以理解,2*16*16*16+7*16*16+1*16.然后,小数部分0.84转换
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/27 04:44:39
![请问熟悉浮点计算的朋友们,如何把一个数字变成4字节浮点数?原说明中是这样说的,10000.84 ,整数部分转换为长整形16进制为00002710H,这个倒是可以理解,2*16*16*16+7*16*16+1*16.然后,小数部分0.84转换](/uploads/image/z/12496758-6-8.jpg?t=%E8%AF%B7%E9%97%AE%E7%86%9F%E6%82%89%E6%B5%AE%E7%82%B9%E8%AE%A1%E7%AE%97%E7%9A%84%E6%9C%8B%E5%8F%8B%E4%BB%AC%2C%E5%A6%82%E4%BD%95%E6%8A%8A%E4%B8%80%E4%B8%AA%E6%95%B0%E5%AD%97%E5%8F%98%E6%88%904%E5%AD%97%E8%8A%82%E6%B5%AE%E7%82%B9%E6%95%B0%3F%E5%8E%9F%E8%AF%B4%E6%98%8E%E4%B8%AD%E6%98%AF%E8%BF%99%E6%A0%B7%E8%AF%B4%E7%9A%84%2C10000.84+%2C%E6%95%B4%E6%95%B0%E9%83%A8%E5%88%86%E8%BD%AC%E6%8D%A2%E4%B8%BA%E9%95%BF%E6%95%B4%E5%BD%A216%E8%BF%9B%E5%88%B6%E4%B8%BA00002710H%2C%E8%BF%99%E4%B8%AA%E5%80%92%E6%98%AF%E5%8F%AF%E4%BB%A5%E7%90%86%E8%A7%A3%2C2%2A16%2A16%2A16%2B7%2A16%2A16%2B1%2A16.%E7%84%B6%E5%90%8E%2C%E5%B0%8F%E6%95%B0%E9%83%A8%E5%88%860.84%E8%BD%AC%E6%8D%A2)
请问熟悉浮点计算的朋友们,如何把一个数字变成4字节浮点数?原说明中是这样说的,10000.84 ,整数部分转换为长整形16进制为00002710H,这个倒是可以理解,2*16*16*16+7*16*16+1*16.然后,小数部分0.84转换
请问熟悉浮点计算的朋友们,如何把一个数字变成4字节浮点数?
原说明中是这样说的,10000.84 ,整数部分转换为长整形16进制为00002710H,这个倒是可以理解,2*16*16*16+7*16*16+1*16.然后,小数部分0.84转换为浮点型3F570A3DH.
1、为什么一个数字好好的,非要拆分为整数部分和小数部分?
2、整数部分和小数部分的算法为什么不一样?
3、小数部分是怎么计算出来的,算法.
说明书后面又讲100的4字节浮点数为42C80000H,为什么不按照上面长整形的10000变成00002710H来算哪?这里的42C80000H是怎么得到的,什么算法.
请朋友们给予解释,
请问熟悉浮点计算的朋友们,如何把一个数字变成4字节浮点数?原说明中是这样说的,10000.84 ,整数部分转换为长整形16进制为00002710H,这个倒是可以理解,2*16*16*16+7*16*16+1*16.然后,小数部分0.84转换
参见IEEE 754编码标准
0.84这个来说
0.84×2 = 1.68 那么二进制小数部分第一位为1
0.68×2 = 1.36 那么二进制小数部分第二位为1
0.36×2 = 0.72 那么二进制小数部分第三位为0
..
一直继续下去直到得到23位 二进制小数(0.1 10101110000101000111101)
正数的符号位为0,
小数点右移一位,得到1 .10101110000101000111101 那么 exponent位-1 (-1+127=126 biased form)126二进制为01111110
所以0-01111110-10101110000101000111101=3F570A3DH
再看100.0整数部分100=64H=01100100
小数部分为0,
小数点左移6位1.100100,exponent 6+127=133=85H=10000101
0-10000101-10010000000000000000000=42C80000H