首页 文章

如何使用浮点数进行舍入

提问于
浏览
18

关于IEEE-754单精度浮点,你如何执行舍入到最近,在所需位置(默认和最常见的模式)中绕到最近的偶数位?

基本上我有保护位,圆位和粘滞位 . 因此,如果我们将它们组成一个向量并将其称为GRS,则以下规则适用:

  • 如果 G = 0 ,向下舍入(什么都不做)

  • 如果 G = 1RS == 10RS == 01 ,向上舍入(向尾数添加一个)

  • if GSR = 111 ,round to even

所以我不知道如何进行最接近的回合 . 任何帮助是极大的赞赏 .

3 回答

  • 5

    为了确保我们在同一页面上, G 是三个中最重要的位, R 接下来, S 可以被认为是最低有效位,因为它的值部分代表了被截断的更低有效位在计算中 . 这三个位仅在进行计算时使用,并且在计算之前或之后不存储在浮点变量中 .

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

    GRS - 行动
    0xx - 向下舍入=什么都不做(x表示任何位值,0或1)
    100 - 这是 tie :如果 G 之前的尾数位是1,则向上舍入,否则向下舍入=什么都不做
    101 - 向上舍入
    110 - 向上舍入
    111 - 向上舍入

    通过在 G 之前的尾数的最低有效位位置将尾数加1来完成舍入 . 如果尾数溢出(它将存储的23个最低有效位变为零),则必须向指数加1 . 如果指数溢出,则根据数字符号将数字设置为无穷大或无穷大 .

    在平局的情况下,如果尾数是奇数,则在尾数中加1,如果是偶数,则不添加任何内容 . 这就是使结果四舍五入到最接近的偶数值的原因 .

  • 0

    只是想补充说 S 位不仅仅是 GR 位之后的一点 . 如果在 GRS 位之后有可用位,则它实际上是那些逻辑 OR ,包括 S 位 .
    换句话说,如果 GR 位后面的任何位是 1 ,则 S 位值将为 1 .

  • 30

    当一组位低于您保持的精度时,请考虑以下内容进行舍入:

    • 如果您保留的最低有效位为0,则只需将0x7ff .... f添加到舍入位 .

    • 如果您保留的最低有效位为1,则只需将0x800 .... 0添加到舍入位 .

    我认为这只实现了一次测试所需的行为 .

相关问题