• 浮点数加法减法的舍入原则——计算机组成原理


    舍入处理

    原因

    在对阶或向右规格化中,被右移的尾数部分的低位会被丢掉,从而造成一定的误差。故要进行舍入处理,减少这种误差。

    具体两种方法

    1. “0舍1入法”:右移时被丢掉的最高位是0则直接舍去(包括0之后的);如果是1则舍去并在最低有效位上加1;
      2.“恒置1”法:只要数位被丢掉,一律在最低有效位上加1.

    IEEE754标准中的4种方法

    1. 就近舍入:即十进制下的“四舍五入”,例如有效数字超出规定数位的多余数字是1001,它大于超出规定最低位的一半(即0.5),故最低位进1。如果多余数字是0111,它小于最低位的一半,则舍掉多余数字(截断尾数、截尾)即可。对于多余数字是1000、正好是最低位一半的特殊情况,最低位为0则舍掉多余位,最低位为1则进位1、使得最低位仍为0(偶数)。

    注意这里说明的数位都是指二进制数。

    举例:要求保留小数点后3位。

    对于1.0011001,舍入处理后为1.010(去掉多余的4位,加0.001)
    对于1.0010111,舍入处理后为1.001(去掉多余的4位)
    对于1.0011000,舍入处理后为1.010(去掉多余的4位,加0.001,使得最低位为0)

    对于1.1001001,舍入处理后为1.101(去掉多余的4位,加0.001)
    对于1.1000111,舍入处理后为1.100(去掉多余的4位)
    对于1.1001000,舍入处理后为1.100(去掉多余的4位,不加,因为最低位已经为0)

    对于1.01011,舍入处理后为1.011(去掉多余的2位,加0.001)
    对于1.01001,舍入处理后为1.010(去掉多余的2位)
    对于1.01010,舍入处理后为1.010(去掉多余的2位,不加)

    对于1.01111,舍入处理后为1.100(去掉多余的2位,加0.001)
    对于1.01101,舍入处理后为1.011(去掉多余的2位)
    对于1.01110,舍入处理后为1.100(去掉多余的2位,加0.001)

    2.朝0舍入:即朝数轴零点方向舍入,即直接截尾。
    3.朝正无穷舍入:对正数而言,只要多余位不全为0则向最低有效位进1;负数则直接截尾。
    4.朝负无穷舍入:对负数而言,向最低有效位进1;正数若多余位不全部为0则简单截尾。

  • 相关阅读:
    MySQL常用团队开发规范
    X进制
    MySQLJDBC
    Centos安装MongoDB
    log4php PHP 的日志框架
    20220512 08:00:02
    JS/TS笔记(仅语言层面的)
    聊聊我们是如何做技术保障的
    20220512 08:00:02
    Github不稳定的解决办法
  • 原文地址:https://www.cnblogs.com/jva-index/p/13897423.html
Copyright © 2020-2023  润新知