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

本文深入探讨了计算机中单精度浮点数的运算过程,包括浮点数的构成、规格化与非规格化、对阶策略以及浮点数加减法中的特殊处理。通过例子详细解释了保护位、舍入位和粘位在提高计算精度中的作用,并指出即使有这些机制,单精度浮点数运算仍可能存在精度问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

在PA_2019fall中有一项任务是完成CPU中的浮点数运算,这也是我第一次认真的思考了一下真实的计算机中CPU是如何进行的浮点数运算

在写PA的过程中一头雾水,从迷茫,到困惑,到弄懂,到完成,中间经历了各种坎坷,又无奈于手上的资料仅仅只有一个Guide和i386,剩下不会的地方全靠百度

于是就诞生了这一篇博客,把其中的过程给大家讲的明明白白的!

预备知识

什么是浮点数?浮点数表示的是一个数字,其小数点所在的位置是不确定的,也就是浮动的,因此称之为浮点数

在IEEE 754标准中,单精度的浮点数由3部分组成

符号位,在首位,用1表示负数,0表示正数

阶码

math?formula=exponent 部分,一共八位,采用移码形式,偏置常数为127

尾数部分,一共23位。

规格化于非规格化

规格化的数表示阶码部分不是全都为0,其23位的尾数实际上表示了24位,最高缺省位为1。而非规格化的数没有缺省位。

尾数加上最高位可能存在的缺省的1后构成的有效数字称为

math?formula=significand

实现之前的思考

排除特殊情况

fe981895daac

Simple

根据表格我们可以先把边界条件排除掉,比如

math?formula=%2B0%2C-0%2C%20%2B%5Cinfty%2C%20-%5Cinfty%2CNaN

加减

如何让两个浮点数相加?根据上面的知识我们知道两个浮点数的形式基本可以这样给出

math?formula=1.ababab*2%5E%7Bexponent%7D,我们很容易就能想到两个浮点数是不能直接相加的,应该让他们同阶后再将尾数相加,这个操作我们叫对阶

对阶

对阶有两种方式,小阶往大阶对齐和大阶往小阶对齐,该如何选择呢?

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值