除数尾数全为零时的浮点算法 - 例如 2.0 in - IEEE -754

Floating Point Algorithm when Divisor Mantissa is all zeros - say in the case of 2.0 in - IEEE -754

我需要为小型 SBC 实现一个浮点包,现在大部分例程都可以工作,但在测试过程中我注意到 1(附件)中的算法将在除数尾数全为零的情况下,不会(实际上不能)产生正确答案,例如 500/2 将产生答案 255.0 而不是 250.0

01000000011111110100000000000000 = 0x43FA00  (500 base 10) and
01000000000000000000000000000000 = 0x400000  (2 base 10)

会产生

01000011011111111000000000000000 =0x437F0 (255 base 10)

有没有精通浮点运算或 FP 算法的人可以帮忙?

[]

显示的图表中没有任何内容表示要使用作为浮点数尾数的主要编码 的位。人们不应该将编码某物的位与事物本身混淆。例如,普通 IEEE-754 二进制浮点数的实际有效位是一些二进制数字 1.xxx…xxx,其值在 [1, 2) 中,位数由特定格式确定。 (次正规数使用数字 0.xxx…xxx。)当数字以交换格式编码时,xxx…xxx 位存储在主有效位字段中,前导 1 或 0 位通过以下方式编码指数场。 (如果指数字段不为零,并且不表示无穷大或 NaN,则前导位为 1。否则为 0。)

一般情况下,实际有效位用于算术运算,而不仅仅是主有效位字段的位。