浮点数在内存中的运算

article/2025/9/9 15:04:00

他们力量的源泉,是值得信赖的搭档以及想要保护的对象还有强大的敌人

本文收录于青花雾气-计算机基础

往期回顾

从汇编代码探究函数栈帧的创建和销毁的底层原理

从0到1搞定在线OJ

数据在内存中的存储

计算机存储的大小端模式

目录

浮点数的二进制转化及存储规则等

浮点数计算规则

1.指数向高位对齐

2.运算过程中的进位问题


大家好,我是纪宁。

这篇博客将给大家介绍浮点数在内存中是如何进行计算的

浮点数的二进制转化及存储规则等

在上次介绍了数据在内存中是如何存储的,其中就介绍了浮点数是如何在内存中存储的

不懂浮点数的二进制是如何转化和存储的可以去看我的这篇博客

数据在内存中的存储

其中详细介绍了浮点数的二进制如何转化以及国际标准IEEE规定的浮点数在内存中的存储方法

以下为简单复习

一个浮点数可以统一写成   (-1)^S * M * 2^E,其中(-1)^S表示这个浮点数的正负,当S=0时,表示这个浮点数为正值;S=1表示这个浮点数为负值。M表示有效数字,大于等于1,小于2,上例中有效数字M就是1.01101。2^E表示指数位,上例中E=2。如图所示

以5.625举例子,5.625的二进制位形式是101.101

这是浮点数在内存中的存储形式

E+127/255存入,M去掉1存入

说了这么多,但是浮点数在内存中到底是如何计算的呢?

其实浮点数计算和存储的时候还是略有差别

浮点数计算规则

1.指数向高位对齐

什么意思呢?

如果两个浮点数进行相加,一个的E=3,一个的E=2,那么就要将E=2的浮点数转化为E=3的浮点数

转化方法就是改变这个浮点数的有效数字,将有效数字再次前移

例如5.625要与9.125相加

5,625的E=2,有效数字为1.01101

9.125的E=3,有效数字为1.001001

5.625的E小于9.125的E,所以将5.625的E改为3,同时将它的有效数字前移1位

从1.01101变成0.101101

所以在计算的时候,5.625的V就变了,如图

将改变之后的M部分按二进制位运算方法运算,这个结果就是最终结果的有效数字

再将这个数字乘指数部分即可以得到最终结果

2.运算过程中的进位问题

上例解释了5.625和9.125的相加,但他们有效数字的小数点后第一位的数字加起来没有超过1,那么该如何计算呢?计算完又将如何存储?

例如进行5.625+9.75的浮点数运算

9.75----->1001.11----->1.00111      E=3

可以看出,当出现进位的情况,在计算的时候正常计算即可,只需要存储的时候有所差别

因为计算M结果的时候并不是在存储位置本身的地方进行的,是先取出来计算,然后计算完将结果重新储存进去,所以不用担心会有溢出的情况

内存有足够的空间去存储

那么浮点数在内存中的运算到这里就结束了,因为计算机CPU中只有加法

至于浮点数的乘法、减法、除法等,都可以转化为浮点数的‘加法’

如一个浮点数减一个浮点数

可以转化为一个浮点数加另一个浮点数的负数,其他都是类似的原理

在这里插入图片描述


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

相关文章

浮点数

在学完码制之后,发现其实整数之间的运算并不复杂,而真正复杂的是浮点数之间的运算,在这里我简单说明一下浮点数的运算。 浮点数的表示: NM*Rⁿ,其中M成为尾数,n是指数,R是基数. 例如 &#xff1…

python的关于浮点数的运算

由于浮点类型的特殊性,浮点数整数部分和小数部分组成,使用浮点数进行计算时,可能会出现小数位数不确定的情况。 比如如下的计算,你会发现计算结果是无穷小数 n11.1 n22.2 n32.1 print(n1n2) print(n1n3) python通过引入Decimal模…

浮点数的运算 —— 浮点数的加减运算

题目 阶码运算和尾数运算分开进行。浮点数的加减运算一律采用补码。 一、真值到机器数的转换 二、对阶 使两个数的阶码相等,小阶向大阶看齐,尾数每右移一位,阶码加1 三、尾数加减 将对阶后的两个尾数按定点加(减)…

计算机中浮点数加法运算

十进制浮点数加法 首先以手工过程将科学计数法表示的两个十进制数相加: 9.999*10^1 1.610 * 10^-1。假设有效位只有4个十进制,且指数为两个十进制数位。 步骤1:为了能让两数相加,我们需对指数较小的小数点进行调整&#xff0c…

定点数和浮点数的运算

文章目录 1、补码加减法2、算法流程3、逻辑实现4、溢出判断5、移位操作6、舍入方法7、定点乘法运算8、定点除法运算9、浮点数相关计算 1、补码加减法 原码、反码、补码的转换: 1、先把数值转换成对应的二进制数;(进制转换)&#…

关于浮点运算和定点运算

什么是定点数? https://baike.baidu.com/item/%E5%AE%9A%E7%82%B9%E6%95%B0/11030127什么是定点运算? https://baike.baidu.com/item/%E5%AE%9A%E7%82%B9%E8%BF%90%E7%AE%97/1861887?fraladdin什么是浮点数? https://baike.baidu.com/item/%…

浮点数运算和溢出

何为浮点数 在大部分实现中,浮点数通常是基于IEEE浮点标准用V(-1)的形式来表示一个数 s是符号位,决定这个数是正数还是负数.significand M是一个二进制小数,范围在[1~ 2 - ]或者[0-] 中文称为尾数.exponent E是对浮点数加权,权重…

浮点数的运算

浮点数的加减运算 从十进制科学计数法理解浮点数的加减运算: 对阶的原则是小阶对大阶(算术右移),之所以这样做是因为若大阶对小阶(算数左移),则尾数的数值部分的高位需移出,而小阶对…

浮点数的加法运算

浮点数的加法运算分以下五个步骤: 1、对阶: 这一点和十进制中计算指数一样,首先应该使指数化为相同的指数幂,例如: x3*10^4,y4*10^3,则,xy3*10^40.4*10^4(30.4)*10^4 二进制中也是如此: x.…

2.6 浮点运算方法和浮点运算器

学习目标: 以下是一些具体的学习目标: 理解浮点数的基本概念和表示方法,包括符号位、指数和尾数。学习浮点数的运算规则和舍入规则,包括加、减、乘、除、开方等。了解浮点数的常见问题和误差,例如舍入误差、溢出、下…

什么是浮点数?

微信搜索关注「水滴与银弹」公众号,第一时间获取优质技术干货。7年资深后端研发,用简单的方式把技术讲清楚。 在上一篇文章中,我们主要介绍了在计算机中使用定点数表示数字的方式。 简单回顾一下,简单来说,用定点数表…

浮点数加减运算

浮点运算要把阶码和尾数分别处理。 阶码的运算是定点整数运算,对阶码的运算四种:阶码加1,阶码减1,两阶码求和,两阶码求差。 尾数的运算是定点小数运算,运算过程中一般取双符号位 浮点运算器总是由处理阶…

浮点数运算原理详解

导读:浮点数运算是一个非常有技术含量的话题,不太容易掌握。许多程序员都不清楚使用操作符比较float/double类型的话到底出现什么问题。 许多人使用float/double进行货币计算时经常会犯错。这篇文章是这一系列中的精华,所有的软件开发人员都应…

浮点数运算——加减乘除都有哈

什么是浮点数 浮点数运算异常 IEEE 754 标准规定的五种异常情况 浮点数除0的问题 浮点数加减运算 浮点数乘除运算 导读:浮点数运算是一个非常有技术含量的话题,不太容易掌握。许多程序员都不清楚使用操作符比较float/double类型的话到底出现什么问题…

浮点数的运算步骤

浮点数的运算步骤 浮点数的加减运算一般由以下五个步骤完成:对阶、尾数运算、规格化、舍入处理、溢出判断 一、对阶 所谓对阶是指将两个进行运算的浮点数的阶码对齐的操作。对阶的目的是为使两个浮点数的尾数能够进行加减运算。因为,当进行M x2Ex与M …

浮点数运算

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

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

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

浮点数的运算方法

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

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

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

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

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