写在前面
在PA_2019fall中有一项任务是完成CPU中的浮点数运算,这也是我第一次认真的思考了一下真实的计算机中CPU是如何进行的浮点数运算
在写PA的过程中一头雾水,从迷茫,到困惑,到弄懂,到完成,中间经历了各种坎坷,又无奈于手上的资料仅仅只有一个Guide和i386,剩下不会的地方全靠百度
于是就诞生了这一篇博客,把其中的过程给大家讲的明明白白的!
预备知识
什么是浮点数?浮点数表示的是一个数字,其小数点所在的位置是不确定的,也就是浮动的,因此称之为浮点数
在IEEE 754标准中,单精度的浮点数由3部分组成
符号位,在首位,用1表示负数,0表示正数
阶码
部分,一共八位,采用移码形式,偏置常数为127
尾数部分,一共23位。
规格化于非规格化
规格化的数表示阶码部分不是全都为0,其23位的尾数实际上表示了24位,最高缺省位为1。而非规格化的数没有缺省位。
尾数加上最高位可能存在的缺省的1后构成的有效数字称为
实现之前的思考
排除特殊情况
Simple
根据表格我们可以先把边界条件排除掉,比如
加减
如何让两个浮点数相加?根据上面的知识我们知道两个浮点数的形式基本可以这样给出
,我们很容易就能想到两个浮点数是不能直接相加的,应该让他们同阶后再将尾数相加,这个操作我们叫对阶
对阶
对阶有两种方式,小阶往大阶对齐和大阶往小阶对齐,该如何选择呢?
<