前面讲到了浮点数计算时候的步骤:对阶,尾数求和,规格化。没有细细研究舍入的问题。

需要提出的是,阶码是小的向大的看齐,因此尾数求和阶段只有右移,没有左移。在规格化阶段,尾数超过加和溢出,需要右移。高位不是1的时候就左移。
左移,阶码要-1,右移,阶码要+1.
我以为自己懂了,但是真的遇到问题,才发现有一处不明,导致全盘皆不明。

书上提供了两种舍入的方法,一种是0舍1入法,一种是恒置1法。

具体解释是这样。

0舍1入法:尾数右移时,被移去的最高位数值为0,则舍去;被移去的最高位数值为1,则在末位加1.这样可能导致尾数溢出,因此还需要再右归。

我难以理解这个概念:什么是被移去的最高位?惶恐不安许久,终于明白,原来指的是:右移的时候,低位将被舍弃,因为位置有限,既然是右移,自然最右边的数位先丢掉。
假设补码表示。规则是左0右1,即:左移低位补0,右移高位补1.
1.01010101右移一次,被丢弃的位是1,这个时候被遗弃的最高位是谁?当然是1,因为只有一位。根据0舍1入的规则,尾数末尾需要加1.
保存的数位是:1.10101010 + 0.00000001 = 1.10101011
再右移一次,被丢弃的数位就有两位了,11。这个时候最高位就是1,所以,本次右移仍然需要在尾数最末尾加1.

需要额外说明的是,做高位一般多是指左边的位置。

也许这对你来说,根本不必加以总结,但是对我而言,我困惑了一段时间,所以,特别提出来,希望对你也有一点点价值。

恒置1法就不用说了,每一次右移,都在尾数的末尾加1.

还有,这里不知道你有没有体会到,右移,是一次一次进行。比如要右移三次,那么就有可能尾数加了三次1. 而不是看一下移动三位,最高位是1才加一个1. 如果这个理解出粗,我会回来修正的。

以上。

浮点数运算中的舍入问题相关推荐

  1. 整数运算和浮点数运算中除数为0的区别

    整数运算和浮点数运算中除数为0的区别: 整数中除数为0:int d4 = 1 / 0: ​ 报错:Exception in thread "main" java.lang.Arit ...

  2. 浮点数的输入以及浮点数运算

    浮点数的输入以及浮点数运算 写在前面 上一次我们讲解了IEEE的标准,还记得多少? 之前我提到过,有很多小数是二进制浮点数无法表示的,因此就难免会遇到舍入的问题.这一点其实在我们平时的计算当中会经常出 ...

  3. 计算机浮点数乘法过程,计算机中单精度浮点数运算详解

    写在前面 在PA_2019fall中有一项任务是完成CPU中的浮点数运算,这也是我第一次认真的思考了一下真实的计算机中CPU是如何进行的浮点数运算 在写PA的过程中一头雾水,从迷茫,到困惑,到弄懂,到 ...

  4. 深入理解计算机系统(2.8)---浮点数的舍入,Java中的舍入例子以及浮点数运算(重要)

    https://www.cnblogs.com/zuoxiaolong/p/computer12.html 前言 上一章我们简单介绍了IEEE浮点标准,本次我们主要讲解一下浮点运算舍入的问题,以及简单 ...

  5. python减法精确度不准是什么问题,聊聊Python中的浮点数运算不准确问题

    大家好,老 Amy 来了.之前就意识到一个问题,但是最近又有朋友提出来了,所以就想着干脆记录下来,分享给大家叭~ 啥问题呢?请看题: 也就是说,需要大家计算1.1-1的值,很多朋友会说:"e ...

  6. js中浮点数运算精度问题

    在js中,我们有时会遇到计算,通过加减乘除处理某些业务.那么这时候如果不做任何处理,就会出现如下典型的精度丢失问题. console.log(0.1 + 0.2) ; // 0.30000000000 ...

  7. Python中关于浮点数运算的不确定尾数的解释

    一.浮点数类型 与数学中实数概念一致,带有小数点及小数的数字.浮点数取值范围和小数精度都存在限制,但常规计算可忽略. 取值范围数量级约-10308到10308,精度数量级10-16. 二.浮点数运算的 ...

  8. python运算结果是浮点数_Python中的浮点数原理与运算分析 python中浮点数等于整数?为什么?...

    python的浮点数运算是不是精度有问题阿 python中浮点数的处理女生啊,平时要好好护肤,保持身材,多看书,多旅行,有自己的想法,去做自己喜欢的事,培养自信,不要把精力全部用在一个男人身上,成天胡 ...

  9. python浮点数怎么运算_为什么说浮点数缺乏精确性? python中浮点数运算问题

    我想从两个角度回答: 一:十进制小数转化成二进制小数的方法.(简单举例,看完就可以自己用笔进行运算.) 二:如何解决python中的浮点数运算问题. 关于一: 拿1.375这个十进制数举例,pytho ...

最新文章

  1. 北斗报文php,北斗卫星一代短报文通信技术
  2. Nature Plants:河南大学王学路团队揭示大豆与根瘤菌匹配性的进化及其分子机制...
  3. 李宏毅机器学习笔记4:Brief Introduction of Deep Learning、Backpropagation(后向传播算法)...
  4. Leetcode1702. 修改后的最大二进制字符串[C++题解]:思维题
  5. hybris impex里的小括号语法
  6. What is 测试金字塔?
  7. SQL的四种连接-左外连接、右外连接、内连接、全连接(转)
  8. 计算机二级msoffice高级应用考试,全国计算机二级MSOffice高级应用考试大纲
  9. 小白的java学习之路 “ 选择结构(一)”
  10. 独家:为了永不停机的计算服务 - 三月月刊
  11. c++动态联编与静态联编
  12. matlab2010a编译器,MATLAB 2010a 添加 VS2010 编译器
  13. 彻底卸载Cfree5.0
  14. stc15w4k32s4芯片引脚图片_STC15W4K32S4系列
  15. Unhandled exception:java.lang.IllegalAccessException提示报错
  16. 杂项:Unity3D
  17. 锐捷文件描述错误linux,Kubuntu 14.10 MentoHUST 配置libpcap 锐捷校园网登录总结
  18. CPU使用率的计算方法
  19. Spark Streaming控制每秒消费数据的速度
  20. Linux常用命令——lftp命令

热门文章

  1. 淮阴工学院计算机系在哪个校区,2021年淮阴工学院有几个校区,大一新生在哪个校区...
  2. 二维数组递归算法c语言,C语言课程设计--二维数组的按行求和及递归函数的编写简单家庭财务管理程序的设计.doc...
  3. 更换jdk版本_滴滴夜莺发布 v3 版本,从运维监控演化成了运维平台
  4. mysql创建表的默认大小_mysql InnoDB建表时设定初始大小的方法
  5. Python raw_input()
  6. 编译运行一个java程序_如何从另一个Java程序编译和运行Java程序
  7. Python unittest –单元测试示例
  8. 使用PS从图片中抠取签章部分
  9. git 报错 Repository Not Found
  10. Ubuntu10.04下Linux内核编译的完整步骤