0

如果我想将 -2455.1152 表示为 32 位,我知道第一位是 1(负号),但我可以将 2455 转换为二进制 10010010111 但对于小数部分我不太确定。.1152 可以有无数个小数部分。这是否意味着最多只能使用 23 位来表示小数部分?那么既然 2445 使用 11 位,那么 11 到 0 位是小数部分吗?

对于二进制表示,我有 10010010111.00011101001。指数为 10。10+127=137。137 作为二进制是 10001001。

完整的代表将是:

1 10001001 1001001011100011101001

那正确吗?

4

1 回答 1

1

看起来您正在尝试设计自己的浮点表示,但您使用了定点标记,因此我将解释如何将您的实数转换为传统的定点表示。首先,您需要确定将使用多少位来表示数字的小数部分。为了便于讨论,假设 16 位用于小数部分,15 位用于整数部分,1 位用于符号位。现在,将实数的绝对值乘以2^{16}:2455.1152 * 65536 = 160898429.747。您可以四舍五入到最接近的整数,也可以截断。假设我们只是截断为 160898429。将其转换为十六进制我们得到 0x09971D7D。为了使这个为负,反转并在 LSB 上加 1,最终结果为 0xF668E283。

要转换回实数,只需反转过程即可。取定点表示的绝对值并除以 2^{16}。在这种情况下,我们会发现定点表示等于实数 -2455.1151886 。当从实数转换为定点时,可以通过舍入而不是截断来提高精度,或者允许小数部分使用更多位。

于 2013-06-22T02:10:29.457 回答