Floating point 24位二进制到单精度浮点数
我有以下24位二进制文件: 0101 0011 1111 1101 01111 1101 我需要弄清楚: 这24位可以表示哪对单精度浮点(实数)数 教科书的例子是说,将24位分割成两个12位二进制数是我应该走的方向 我会以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
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表示指数?你能推荐更多的资源吗?