深入理解计算机系统——浮点数
目录一、为什么需要浮点数1.1 二进制小数的局限1.2 浮点数的思想二、IEEE 754 浮点数标准2.1 表示形式2.2 两种精度2.3 编码的三种情况三、浮点数的舍入Rounding3.1 为什么要舍入3.2 四种舍入模式IEEE 754 定义3.3 四舍五入Rounding详解四、浮点运算4.1 浮点数加减4.2 浮点数乘法4.3 浮点数除法参考(19 封私信 / 80 条消息) 一文彻底掌握浮点数 - 知乎No41.浮点数近似规则_guard round sticky-CSDN博客一、为什么需要浮点数1.1 二进制小数的局限二进制小数只能精确表示形如的数如 0.5, 0.25, 0.125…。很多有理数如 1/3, 1/5在二进制中是无限循环小数无法精确保存。定点表示法固定二进制小数点位置能表示的数值范围非常有限既不能表示极大值也不能表示极小值。1.2 浮点数的思想用科学记数法的二进制版本,其中 M (尾数/有效数字) 在 [1,2) 或 [0,1) 之间E指数可正可负。这样同样的位数可以覆盖极大的动态范围。二、IEEE 754 浮点数标准2.1 表示形式s符号位0 正 1 负。M尾数Significand。E指数Exponent。2.2 两种精度精度总位数sexp (k)frac (n)Bias单精度 (float)321823127双精度 (double)641115210232.3 编码的三种情况规格化值Normalized指数部分exp不全为 0 且不全为 1。尾数部分可以是任意值。作用用于表示大多数非零数值非规格化值Denormalized指数部分exp 000…0。尾数部分可以是任意值。作用提供表示数值 0 的方法。因为规格化中 M≥1 所以无法表示 0。用于表示非常接近于 0 的数值这些数值太小无法用规格化格式表示。它们填补了 0 和最小规格化正数之间的间隙提供了渐近于 0的连续表示防止了所谓的“下溢”。特殊值 Special Values指数部分exp 111…1。尾数部分全为 0 则表示无穷大不全为 0 则表示 NaN。作用特殊值用于表示那些无法用常规数值表示的情况如无穷大、非数NaN等。这些值通常用于操作的错误或特殊情况的结果如除以0、无效操作等。三、浮点数的舍入Rounding3.1 为什么要舍入位数有限浮点数只能表示有限位尾数。两个浮点数运算加减乘除的精确结果可能不在这个离散集合中。必须用“最接近”的可表示值来近似这个过程就是舍入。3.2 四种舍入模式IEEE 754 定义舍入模式规则描述特点 / 典型应用最近舍入Round to Nearest向最接近的可表示值舍入若正好位于中点则舍入到尾数最低位为偶数的值即最后一位为0默认模式无统计偏差适合科学计算、通用浮点运算向零舍入Round Toward Zero直接丢弃小数部分总是向零的方向舍入正数向下取整负数向上取整截断式舍入适合金融计算、整数转换向上舍入Round Up向正无穷大方向舍入结果不小于原值用于区间上限估计、某些数值算法向下舍入Round Down向负无穷大方向舍入结果不大于原值用于区间下限估计、某些数值算法3.3 四舍五入Rounding详解在二进制中我们要将尾数舍入到固定的frac位数如 23 位。Guard 位 (G)近似后的最低位。Round 位 (R)Guard位的后一位Sticky 位 (S)Round位后的所有位进行或运算后视作一位。1.近似位是0保留位保留保留位后面的全部都丢了这是肯定的近似位不是1都没有达到四舍五入的五。2.近似位为1如果近似位后面任意一位还有1粘滞位那么没商量保留位直接加1因为这比四舍五入的“五”要大了3.近似位为1但是近似位后面的全部都是0到了抉择的时候了1如果保留位是0就把保留位后面的全丢了2如果保留位是1那就给保留位加1让它进位后变成0总之就是在四舍五入刚好等于“五”时把保留位变成偶数即0四、浮点运算4.1 浮点数加减浮点数加法和减法首先需要对操作数进行对齐使得它们的指数相同较小的指数增加同时相应地调整尾数。这可能涉及将尾数的二进制表示向右移位可能导致精度损失。然后执行加法或减法操作。对结果进行规范化和舍入。4.2 浮点数乘法符号位计算结果的符号由两个操作数的符号位决定。如果符号位相同都是正数或都是负数结果为正如果符号位不同结果为负。指数相加两个数的指数相加并减去偏置值单精度浮点数中为127双精度为1023。尾数相乘两个数的尾数相乘。这里的尾数包括隐含的最高位1。结果规范化如果乘法的结果需要规范化即调整为1.xxxx的形式则相应调整指数。舍入处理如果需要对结果进行舍入以适应目标格式。检查溢出或下溢如果指数超出了表示范围则发生溢出结果可能为无穷大或特殊值如果指数太小发生下溢结果可能为 0 或非规格化数。4.3 浮点数除法符号位计算与乘法类似结果的符号由两个操作数的符号位决定。指数相减被除数的指数减去除数的指数再加上偏置值。尾数相除被除数的尾数除以除数的尾数。结果规范化如果必要调整结果使其规范化。舍入处理如果需要对结果进行舍入。检查溢出或下溢与乘法类似的检查。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2512672.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!