如何使用浮点数执行循环
关于IEEE-754单精度浮点数,您如何执行到最近的轮到最接近的位置,在所需的位置(默认和到目前为止最常见的模式)连接到最近的偶数位?
基本上我有守卫位,一点点,和一点点粘。 所以如果我们将它们组成一个矢量并称之为GRS,那么适用下列规则:
G = 0
,向下取整(不做任何事) G = 1
,并且RS == 10
或RS == 01
,则向上取整(将尾数加1) GSR = 111
,则轮到均匀 所以我不确定如何执行到最近的一轮。 任何帮助是极大的赞赏。
为了确保我们在同一页面上, G
是三个中最重要的位, R
接下来,并且S
可以被认为是最不重要的位,因为它的值部分代表已被截断的甚至不太重要的位在计算中。 这三位仅用于计算,并且在计算之前或之后不存储在浮点变量中。
这是你应该做的,以便使用G
, R
和S
将结果四舍五入到最接近的偶数:
GRS - 行动
0xx - 舍入=不做任何事(x表示任何位值,0或1)
100 - 这是一条平局 :如果尾数在G之前是1,则舍入=否则舍弃=无所作为
101 - 收起来
110 - 收起来
111 - 收起来
向上舍入是通过在尾数G
之前的尾数最低有效位位置上加尾数1来完成的。 如果尾数溢出(其存储的23个最低有效位将变为0),则必须将1加到指数上。 如果指数溢出,则根据数字的符号将数字设置为+ infinity或-infinity。
在平局的情况下,如果尾数是奇数,则向尾数加1,如果平均数为零,则不加任何数。 这就是结果四舍五入到最接近的偶数值。
只是想补充一下, S位不仅仅是GR位之后的一位。 如果在GRS位之后有可用位,它实际上是这些位的逻辑或 ,包括S位。
换句话说,如果在GR位之后有一位是1,那么S位值将是1 。
上一篇: How to perform round to even with floating point numbers