二进制浮点数的算法和IEEE754存储格式的算法

##1.二进制浮点数
先分别将整数和小数部分化为二进制,然后整数部分 + 小数点 + 小数部分 + 补的0即可

例:将12.25化为二进制
12的二进制形式为1100,0.25的二进制为0.01,所以结果为1100.01。
##2.IEEE754存储格式

  1. 浮点数化为二进制后,将其小数点移到第一位1的后面,并把第一位1和小数点去掉,余下部分为该格式的尾数(去掉1是因为规格化规范为1.XXX,可把1去掉增加一位精度)。
  2. 计算127(此为32位的偏移量,64位的偏移量为1023) + 之前小数点移动的位数,再将其化为二进制,此为该格式的阶码
  3. 判断该数的正负,正为0负为1,此为该格式的符号位
  4. 把符号位,阶码,尾数连起来,即为所求的IEEE754格式。
  5. 存储格式为:1位符号位 + 8位阶码 + 23位尾数(32位)或1位符号位 + 11位阶码 + 52位尾数(64位)

例:将12.25化为IEEE754规范下的二进制格式

  1. 1100.01化为1.10001,小数点移动了3位,可得尾数为10001000000000000000000
  2. 计算得阶码为130,化为二进制为10000010
  3. 该数为正数,符号位为0,则最终IEEE754格式为0 10000010 10001000000000000000000
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Qt是一个跨平台的GUI应用程序开发框架,本身并没有提供直接实现IEEE 754二进制转换为十进制的双精度算法的功能或类。然而,Qt提供了丰富的数学函数和类,可以通过使用这些功能来实现这一算法。 要将IEEE 754二进制表示转换为十进制的双精度数,可以使用Qt的数学函数和类进行以下步骤: 1. 将二进制字符串转换为十进制: 可以使用Qt的QString类的toULongLong()函数将二进制字符串转换为无符号长整型。 例如,QString binaryString = "11010"; unsigned long long decimalValue = binaryString.toULongLong(0, 2); 将二进制字符串"11010"转换为十进制数值26。 2. 将无符号长整型转换为双精度浮点数: 使用Qt的QDoubleSpinBox类的setValue()函数以及tostring()函数将无符号长整型转换为双精度浮点数,并将其设置为QDoubleSpinBox的值。 例如,QDoubleSpinBox doubleSpinBox; doubleSpinBox.setValue(static_cast<double>(decimalValue)); QString doubleString = doubleSpinBox.text(); 将十进制数值26转换为双精度浮点数,并将其设置为doubleSpinBox的值。 请注意,实际的算法可能需要考虑浮点数的精度、舍入和溢出等方面的问题,并使用更复杂的逻辑来实现转换过程。此外,IEEE 754标准还涉及到特殊值(如无穷大和NaN)的处理,可能需要额外的代码来处理这些情况。 总的来说,虽然Qt本身没有内置的函数或类来直接实现IEEE 754二进制到十进制的转换,但可以通过使用Qt的数学函数和类,结合适当的算法和逻辑,来实现这个转换过程。具体实现方式会根据具体需求和使用场景而有所不同。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值