Floating point 24位二进制到单精度浮点数

Floating point 24位二进制到单精度浮点数,floating-point,binary,Floating Point,Binary,我有以下24位二进制文件: 0101 0011 1111 1101 01111 1101 我需要弄清楚: 这24位可以表示哪对单精度浮点(实数)数 教科书的例子是说,将24位分割成两个12位二进制数是我应该走的方向 我会以0101001111和1101011111 然而,我的问题是,我的教科书只给出了一个16位和32位二进制数的实际工作示例。我不知道如何计算指数、尾数和特征。这对我来说都是新鲜事 编辑:以下是教科书中的一段摘录,指出了我应该达到的目标: 例如,24位的字符串: 0011 0110

我有以下24位二进制文件:

0101 0011 1111 1101 01111 1101

我需要弄清楚:

这24位可以表示哪对单精度浮点(实数)数

教科书的例子是说,将24位分割成两个12位二进制数是我应该走的方向

我会以
0101001111
1101011111

然而,我的问题是,我的教科书只给出了一个16位和32位二进制数的实际工作示例。我不知道如何计算指数、尾数和特征。这对我来说都是新鲜事

编辑:以下是教科书中的一段摘录,指出了我应该达到的目标:

例如,24位的字符串:

0011 0110 0011 1001 0011 0101

转换为一对单精度浮点(实数)数字0.13672和−0.0004044

在这台不太精确的计算机中,任何介于0.13672和0.1406之间的单精度浮点(实数)数字都将具有相同的12位模式


对于那些认为这个问题令人困惑的人:教科书是如何将
0011010011001001001001
转换为0.13672和−0.0004044?

将24位值拆分为一对12位字段看起来是正确的方法。对于两个12位字段,此处使用的浮点格式似乎是,从最左边的位开始:

  • 一个符号位(0表示正,1表示负)

  • 五个指数位,给出一个偏移15的无符号值(因此我们必须从该字段的无符号值中减去15才能得到实际指数)

  • 给出无符号值的六位有效位

以这种格式表示的浮点数的绝对值将由以下公式给出:

significand * ( 2 ^ exponent ) / ( 2 ^ 6 )
对于给定的示例,我们有:

0011 0110 0011 =>
  sign bit       = 0, positive
  exponent field = 01101, which is decimal 13, so actual exponent = 13 - 15 = -2
  significand    = 100011, which is decimal 35

  value = positive 35 * ( 2 ^ -2 ) / ( 2 ^ 6 ) = 0.13672

1001 0011 0101 =>
  sign bit       = 1, negative
  exponent field = 00100, which is decimal 4, so actual exponent = 4 - 15 = -11
  significand    = 110101, which is decimal 53

  value = negative 53 * ( 2 ^ -11 ) / ( 2 ^ 6 ) = -0.0004044

通过使用递增1的有效位值重复这些计算,可以确认有关此格式精度的注释

一对“单精度浮点(实)数”怎么能用相同的24位来表示?@RudyVelthuis我不知道哈哈,这就是我为什么要问的原因。我很困惑。我想它是说把24位分成2 x 12位?太棒了,谢谢!我的问题是我的教科书教我如何在16位、32位和64位二进制文件上实现这一点。你怎么知道用5表示指数?你能推荐更多的资源吗?