浮点数的运算步骤

article/2025/9/9 21:47:13

浮点数的运算步骤

浮点数的加减运算一般由以下五个步骤完成:对阶尾数运算规格化舍入处理溢出判断

一、对阶

所谓对阶是指将两个进行运算的浮点数的阶码对齐的操作。对阶的目的是为使两个浮点数的尾数能够进行加减运算。因为,当进行M x·2Ex与M y·2Ey加减运算时,只有使两浮点数的指数值部分相同,才能将相同的指数值作为公因数提出来,然后进行尾数的加减运算。对阶的具体方法是:首先求出两浮点数阶码的差,即⊿E=E x-E y,将小阶码加上⊿E,使之与大阶码相等,同时将小阶码对应的浮点数的尾数右移相应位数,以保证该浮点数的值不变。几点注意:

(1)对阶的原则是小阶对大阶,之所以这样做是因为若大阶对小阶,则尾数的数值部分的高位需移出,而小阶对大阶移出的是尾数的数值部分的低位,这样损失的精度更小。

(2)若⊿E=0,说明两浮点数的阶码已经相同,无需再做对阶操作了。

(3)采用补码表示的尾数右移时,符号位保持不变。

(4)由于尾数右移时是将最低位移出,会损失一定的精度,为减少误差,可先保留若干移出的位,供以后舍入处理用。

二、尾数运算

尾数运算就是进行完成对阶后的尾数相加减。这里采用的就是我们前面讲过的纯小数的定点数加减运算。

三、结果规格化

在机器中,为保证浮点数表示的唯一性,浮点数在机器中都是以规格化形式存储的。对于IEEE754标准的浮点数来说,就是尾数必须是1.M的形式。由于在进行上述两个定点小数的尾数相加减运算后,尾数有可能是非规格化形式,为此必须进行规格化操作。

规格化操作包括左规和右规两种情况。

左规操作:将尾数左移,同时阶码减值,直至尾数成为1.M的形式。例如,浮点数0.0011·25是非规格化的形式,需进行左规操作,将其尾数左移3位,同时阶码减3,就变成1.1100·22规格化形式了。

右规操作:将尾数右移1位,同时阶码增1,便成为规格化的形式了。要注意的是,右规操作只需将尾数右移一位即可,这种情况出现在尾数的最高位(小数点前一位)运算时出现了进位,使尾数成为10.xxxx或11.xxxx的形式。例如,10.0011·25右规一位后便成为1.00011·26的规格化形式了。

四、 舍入处理

浮点运算在对阶或右规时,尾数需要右移,被右移出去的位会被丢掉,从而造成运算结果精度的损失。为了减少这种精度损失,可以将一定位数的移出位先保留起来,称为保护位,在规格化后用于舍入处理。

IEEE754标准列出了四种可选的舍入处理方法:

(1)就近舍入(round to nearest)这是标准列出的默认舍入方式,其含义相当于我们日常所说的“四舍五入”。例如,对于32位单精度浮点数来说,若超出可保存的23位的多余位大于等于100…01,则多余位的值超过了最低可表示位值的一半,这种情况下,舍入的方法是在尾数的最低有效位上加1;若多余位小于等于011…11,则直接舍去;若多余位为100…00,此时再判断尾数的最低有效位的值,若为0则直接舍去,若为1则再加1。

(2)朝+∞舍入(round toward +∞)对正数来说,只要多余位不为全0,则向尾数最低有效位进1;对负数来说,则是简单地舍去。

(3)朝-∞舍入(round toward -∞)与朝+∞舍入方法正好相反,对正数来说,只是简单地舍去;对负数来说,只要多余位不为全0,则向尾数最低有效位进1。

(4)朝0舍入(round toward 0)

即简单地截断舍去,而不管多余位是什么值。这种方法实现简单,但容易形成累积误差,且舍入处理后的值总是向下偏差。

五、 溢出判断

与定点数运算不同的是,浮点数的溢出是以其运算结果的阶码的值是否产生溢出来判断的。若阶码的值超过了阶码所能表示的最大正数,则为上溢,进一步,若此时浮点数为正数,则为正上溢,记为+∞,若浮点数为负数,则为负上溢,记为-∞;若阶码的值超过了阶码所能表示的最小负数,则为下溢,进一步,若此时浮点数为正数,则为正下溢,若浮点数为负数,则为负下溢。正下溢和负下溢都作为0处理。

要注意的是,浮点数的表示范围和补码表示的定点数的表示范围是有所不同的,定点数的表示范围是连续的,而浮点数的表示范围可能是不连续的。

六、例子

float a=0.3;b=1.6;

a=(0.3)10=(0011 1110 1001 1001 1001 1001 1001 1010)2    Sa=0    Ea=011 1110 1    Ma=1.001 1001 1001 1001 1001 1010

b=(1.6)10=(0011 1111 1100 1100 1100 1100 1100 1101)2      Sb=0    Eb=011 1111 1     Mb=1.100 1100 1100 1100 1100 1101

a+b=?

第一步:对阶

∵ Ea<Eb   Eb-Ea=2

∴ Ma要调整为 0.0 1001 1001 1001 1001 1001 10       10

   E=011 1111 1

第二步:尾数运算

    0.01001100110011001100110

+  1.10011001100110011001101

    1.11100110011001100110011‬

第三步:规格化

1.11100110011001100110011‬已经是个规格化数据了

第四步:舍入处理

由于在对阶时,Ma有右移,且第一次最高为1,第二次为0,所以按"0舍1入",尾数运算结果调整为 1.11100110011001100110100

第五步:溢出判断

没有溢出,阶码不调整,所以最后的结果为

a+b=(0  01111111  11100110011001100110100)2=(0011 1111 1111 0011 0011 0011 0011 0100)2=(3FF33334)16

转为10进制

a+b=1.90000010

b-a=?

第一步:对阶

跟上面加法一样

第二步:尾数运算

   1.10011001100110011001101           

-  0.01001100110011001100110

   1.01001100110011001100111

第三步:规格化

1.01001100110011001100111已经是个规格化数据了

第四步:舍入处理

由于在对阶时,Ma有右移,且第一次最高为1,第二次为0,所以按"0舍1入",尾数运算结果调整为 1.01001100110011001100110

第五步:溢出判断

没有溢出,阶码不调整,所以最后的结果为

a-b=(0  01111111  01001100110011001100110)2=(0011  1111  1010  0110  0110  0110  0110  0110)2=(3FA66666)16

转为10进制

a-b=1.29999995

 

付:浮点运算加法器逻辑电路

 

 

原文地址:https://www.cnblogs.com/yilang/p/11277201.html

 

 

 


http://chatgpt.dhexx.cn/article/X7pSGrAk.shtml

相关文章

浮点数运算

今天学习了浮点数运算&#xff08;加减乘除&#xff09;。浮点数运算主要包括两部分&#xff1a;指数运算和尾数运算。在IEEE754标准下&#xff0c;指数运算就是阶码的运算&#xff0c;类似于无符号数运算。尾数运算是原码运算。之前一直很疑惑为什么前面的教材在介绍原码运算&…

计算机组成原理:浮点数的加、减、乘、除运算(含实例完整运算)

目录 浮点数的加减运算 零操作数的判断 对阶操作 尾数的加减操作 尾数的规格化 结果的舍入处理 结果的溢出判断 加减实例运算过程 浮点数的乘除法 零操作数的检查 阶码的加减操作 尾数的乘除操作 结果的规格化、舍入处理及溢出的判断 具体的操作如下图 乘除实例运算…

浮点数的运算方法

浮点数的运算方法 一、浮点数的表示1.浮点数的表示2.IEEE 754标准3.浮点数类型 二、浮点数的加减法1.定义2.运算步骤 三、运算部件四、强化练习 一、浮点数的表示 1.浮点数的表示 Ms表示尾数的符号位&#xff0c;E中1bit保存阶码的符号位其余空间存放阶码值&#xff0c;M中存放…

typeScript 接口(interface)及其与类型别名(type)的区别

背景 最近自己在学习一些视频剪辑相关的工具&#xff0c;像爱剪辑&#xff0c;剪映这些软件。然后就想自己是不是也可以实现一个类似的&#xff0c;轻量级的在线剪辑工具。最后发现这个款node端的工具库FFCreator&#xff0c;接下来简单介绍一下如何来搭建开发环境&#xff0c…

Type Description : This type is a general type that can be used to declare

错误描述&#xff1a; Complex type: param-valueType Description : This type is a general type that can be used to declare parameter/value lists. 解决方法&#xff1a; 把0移到init-param下面

Type and Value

Type and Value 前言一、reflect.Type1.1 数据结构1.2 方法1.2.1 所有类型通用方法1.2.2 不同基础类型的专有方法 二、reflect.Value总结参考资料 前言 reflect.Type和reflect.Value是go 反射的两大基本类型&#xff0c;一个管变量的类型方面&#xff0c;一个管变量的值方面。…

typescript interface 与 type 声明类型的区别

在 typescript 中, 我们定义类型有两种方式&#xff1a; 接口(interface) 和类型别名(type alias) 在官方文档中我们可以看到: Unlike an interface declaration, which always introduces a named object type, a type alias declaration can introduce a name for any kind…

type是什么

作者&#xff1a;newis 链接&#xff1a;https://www.zhihu.com/question/376890141/answer/1302417252 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 程语言的Type的话&#xff0c;有在不同的场景下有不同的意义…

Type-C

一、Type-C 从USB TYPE-C 的Spec上截一个USB TYPE-C母座的pin脚图&#xff1a; 可以看出&#xff0c;母座上有24根信号&#xff0c; 其中电源和地占据了8根&#xff0c;用于提升电流传输能力&#xff0c;剩下16个&#xff1a; &#xff08;1&#xff09;传输USB3数据的RXx和…

Java Type

Type 是Java 编程语言中所有类型的公共高级接口&#xff08;官方解释&#xff09;&#xff0c;也就是Java 中所有类型的”爹“。其中”所有类型“的描述尤为指的关注。它并不是我们平常工作中经常使用的int、String、List、Map等数据类型&#xff0c;而是从Java语言角度磊说&am…

常见USB接口总结:Type-A、Mini-USB、Micro-USB、Type-C等等

写在前面 最近在整理之前的笔记&#xff0c;打算把一些有价值的笔记发到CSDN分享一下。这篇总结参考的链接如下&#xff0c;结合了自己找的一些图片&#xff0c;非原创&#xff0c;侵权的话私聊我删除。 参考文章链接 https://mb.zol.com.cn/514/5147157.html 总览 标准Type-…

# USB Type-A、Type-B、Type-C及MicroUSB、MiniUSB接口定义

USB Type-A、Type-B、Type-C及MicroUSB、MiniUSB接口定义 文章目录 USB Type-A、Type-B、Type-C及MicroUSB、MiniUSB接口定义1 USB Type-A&#xff08;USB-A&#xff09;2 USB Type-B&#xff08;USB-B&#xff09;3 USB Type-C&#xff08;USB-C&#xff09;3.1 24Pin3.2 16Pi…

Java FileReader相对路径

实验一快要到DDL了&#xff0c;今天在用Javac和Java命令手动执行实验一的代码的时候发现一个问题&#xff0c;当时在IDEA中运行正常的代码&#xff0c;在javac编译手动用java执行的时候发现并不能通过&#xff0c;出问题的代码是一段&#xff08;试图&#xff09;使用相对路径来…

详解HTML的相对路径写法,详解URL相对路径的写法

虽然现在搭网站都会用各种框架&#xff0c;路径方面使用相对路径可能已经比较少了&#xff0c;不过还是总结一下吧。 假设D盘这个路径下有一些文件&#xff1a; D:\例子\html\images\ D:\例子\html\style\ D:\例子\html\example.html D:\例子\html\tupian.gif 1.若引用的资源和…

Python读取相对路径文件

例如下图目录结构: 第一种情况: 1)xxx.py想要打开a.txt,使用相对路径,有如下两种方式: 思路: xxx.py想打开的是b_file下的文件,XXX.py和b_file都在文件目录之下,两者是同级目录,因此操作就是在当前目录向下搜索,因此就可以很容易理解下面的意思了 特别提示:… \是错…

html 的相对路径和绝对路径

整篇文章是以 src 标签进行演示。 文章目录 一、相对路径 1、同级目录查找 2、上一级目录查找 3、下一级目录查找 二、绝对路径 一、相对路径 &#x1f475;相对路径&#xff1a;从当前所处的目录开始查找。 1、同级目录查找 写法&#xff1a; 1.1.直接写文件名&#xf…

java web项目 相对路径怎么写_理解JavaWeb项目中的路径问题——相对路径与绝对路径...

背景:html 在刚开始学习javaweb,使用servlet和jsp开发web项目的过程当中,一直有一个问题困扰着我:servlet 和 jsp 之间相互跳转,跳转的路径应该如何书写,才能正确的访问到相应的servlet或jsp文件?后来,在课堂上,通过老师的讲解,再加上本身的一些思考和实验,终于对we…

相对路径 各种情况

1.相对路径概念 1.1 相对路径就是相对于目标文件或&#xff08;相对虚拟目录&#xff09;的位置。&#xff0c;请看上图&#xff0c;“a.html” 文件里引用了“b.jpg”图片&#xff0c;由于“b.jpg”图片相对于“a.html”来说&#xff0c;是在同一个目录的,那么要在“a.html”文…

java中相对路径怎么写_java中如何使用相对路径读取文件

java中使用相对路径读取文件的方法:1、使用文件【File file = new File(“src/test.txt”)】方法;2、使用类的相对路径;3、使用当前线程的类加载器;4、读取web工程下的文件。 【相关学习推荐: java中使用相对路径读取文件的方法: 一、简单粗暴的 File file = new File(“…

linux 相对路径当前目录,Linux绝对路径和相对路径

前言 在使用linux远程连接操作文件时,我们就会遇到一个问题就是我们必须知道文件的存放位置,才能准确的找到文件并操作文件,在这里指明文件地址就有两种方式,那就是绝对路径和相对路径。 Linux文件目录 我们知道,Linux 系统中所有的文件(目录)都被组织成以根目录“/”开始…