如果我想将-2455.1152表示为32位,我知道第一位是1(负号),但我可以将2455二进制为10010010111但是对于小数部分我不太确定。 .1152可能有无数个小数部分。这是否意味着只有最多23位用于表示小数部分?因此,由于2445使用11位,因此位11到0用于小数部分?
对于二进制表示我有10010010111.00011101001。指数为10. 10 + 127 = 137。 137为二进制为10001001。
完整的陈述将是:
1 10001001 1001001011100011101001
是吗?
答案 0 :(得分:1)
看起来您正在尝试设计自己的浮点表示,但是您使用了定点标记,因此我将解释如何将实数转换为传统的定点表示。首先,您需要确定将使用多少位来表示数字的小数部分。仅仅为了讨论,我们假设16位将用于小数部分,15位用于整数部分,1位用于符号位。现在,将实数的绝对值乘以2 ^ {16}:2455.1152 * 65536 = 160898429.747。您可以舍入到最接近的整数或只是截断。假设我们只是截断为160898429.将其转换为十六进制,我们得到0x09971D7D。为了使其为负,反转并向LSB添加1,最终结果为0xF668E283。
要转换回实数,只需反转该过程即可。取固定点表示的绝对值并除以2 ^ {16}。在这种情况下,我们会发现定点表示等于实数-2455.1151886。当从实数转换为定点时,通过舍入而不是截断,或者通过允许小数部分的更多位,可以提高精度。