如何使用浮点数执行循环

关于IEEE-754单精度浮点数,您如何执行到最近的轮到最接近的位置,在所需的位置(默认和到目前为止最常见的模式)连接到最近的偶数位?

基本上我有守卫位,一点点,和一点点粘。 所以如果我们将它们组成一个矢量并称之为GRS,那么适用下列规则:

  • 如果G = 0 ,向下取整(不做任何事)
  • 如果G = 1 ,并且RS == 10RS == 01 ,则向上取整(将尾数加1)
  • 如果GSR = 111 ,则轮到均匀
  • 所以我不确定如何执行到最近的一轮。 任何帮助是极大的赞赏。


    为了确保我们在同一页面上, G是三个中最重要的位, R接下来,并且S可以被认为是最不重要的位,因为它的值部分代表已被截断的甚至不太重要的位在计算中。 这三位仅用于计算,并且在计算之前或之后不存储在浮点变量中。

    这是你应该做的,以便使用GRS将结果四舍五入到最接近的偶数:

    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

    链接地址: http://www.djcxy.com/p/85629.html

    上一篇: How to perform round to even with floating point numbers

    下一篇: Change floating point rounding mode