<科普>CPU进行四则运算(加减乘除)的主流方法

如下除特殊说明外均为32位数的运算spa

1.加法运算

  A   +   B    =   Cblog

无符号整数加法和有符号整数加法均采用如下方案进行操做io

用到的寄存器与初始化内容:基础

                32位加数寄存器--------初始化为加数循环

                32位被加数寄存器 ----初始化为被加数im

                32位和寄存器 ----------所有置零img

操做方案以下:解决方案

  将加数寄存器被加数寄存器按位对齐,每组对应位分别进行如下操做:co

放在一块儿就是:(因32位画出来过于繁杂,这里的图示采用了8位)浮点数

在此基础上还要设置溢出判断,来表示此次运算是否发生溢出。

2.减法运算

  被减数   -   减数  =  差

  这里承用上面的加法运算单元。

  用A表示被减数,B表示减数。首先将B转换为其相反数即(-B)。而后进行A+(-B)的加法运算。同时也要设置一段逻辑电路判断减法运算是否发生溢出。

3.乘法运算

  被乘数  X  乘数   =   积

1>无符号整数乘法

   最先的解决方案:

所用到的存储器与初始化存储内容:

                32位乘数寄存器--------初始化为乘法运算的乘数

                64位被乘数寄存器 ----低32位填充为乘法运算的被乘数,高32位置零

                64位积寄存器 -----------所有置零

 

用到的功能分别为:循环,无符号加法,移位。

 

执行结构图以下:

 

    改进后的解决方案:

所用到的存储器与初始化存储内容:

                32位被乘数寄存器(简称A)------初始化为乘法运算的被乘数

                64位积寄存器 (简称B)-----------高32位置零,用来存放乘积,低32位初始化为乘数

对于每次迭代:

  

 

2>有符号整数乘法

先把乘数和被乘数的符号位记下来,而后把乘数和被乘数转换成正数进行无符号乘法运算,运算结果再加上符号。

3>浮点数乘法

 

4.除法运算

  被除数   ÷   除数  =  商 ••••••余数

1>无符号整数除法

 

所用到的存储器与初始化存储内容:

                32位商寄存器-----------所有置零

                32位除数寄存器 -------填充32位除数

                65位余数寄存器 -------左半部分置零,右半部分填充32位被除数

 

处理结构图:

 

2>有符号整数除法

 跟上文有符号整数乘法同样,先保存除数、被除数符号,若二者符号异或为1,则商为负。

3>浮点数除法

相关文章
相关标签/搜索