第三章预习

一、C程序中涉及的运算
1.按位运算
符号|按位OR运算;符号&按位AND运算;符号~表示按位NOT运算;符号^按位XOR运算。
掩码操作:通过与给定的一个位模式进行按位与,可以提取所需要的位,可以对这些位进行“置1” “清0” “1测试” 或"0测试"等。
2.逻辑运算
符号||按位OR运算;符号&&表示AND运算;符号!表示NOT运算。
逻辑运算是非数值计算其操作数只有两个逻辑值:True 和False通常用非0数表示逻辑值True,用全0数表示逻辑值False。
3.移位运算
逻辑移位:不考虑符号位,把高(低)位移出,低(高)补0.
算术移位:机器码采用有符号数,符号位不参与移位。
原码左移、右移都补0,原码算术移位:左移丢1,运算出错,右移丢1,影响精度。

基本运算部件
基本的运算部件是加速器、ALU和位移器,ALU的核心部件是加法器
串行进位加法器
全加器:用来实现两个本位数加上低位生成一位本位以及一位向高位的进位

并行进位加速法
用n位全加器实现两个n位操作数各位同时相加,这种加法器称为并行加法器,并行加法器中全加器的个数与操作数的位数相同
Pi=Xi+Yi
Gi=XiYi
Pi称为进位传递函数,其含义是:当Xi、Yi中有一个为1时,若有低位进位输入,则一定被传到高位。
Gi称为进位生成函数,其含义是:当Xi、Yi均为1时,不管有无低位进位输入,本位一定向高位产生进位输出。

计算机内部大多采用两级或多级先行进位加法器。
带标志加速器
n位无符号数加法器只能用于两个n位二进制数相加,不能进行无符号整数的减运算,也不能进行带符号整数的加/减运算。要能够进行无符号整数的加/减运算和带符号整数的加/减运算,还需要在无符号数加法器的基础上增加相应的逻辑门电路,使得加法器不仅能计算和/差,还要能够生成相应的标志信息。

算术逻辑部件
ALU是一种能进行多种算术运算和逻辑运算的组合逻辑电路,其核心部件是带标志加法器,多采用先行进位方式
定点数运算
补码加减运算

源码加减运算
(1)比较两个操作数的符号,对加法实行“同号求和,异号求差”,对减法实行“异号求和,同号求差”。
(2)求和时,数值位相加,若最高位产生进位则结果溢出。和的符号位取被加数的符号。
(3)求差时,被加数(或被减数)数值位加上加数(或减数)数值位的补码,并按以下规则产生结果。
1.最高数值位产生进位,表明加法结果为正,所得数值位正确。
2.最高数值位没有产生进位,表明加法结果为负,得到的是数值位的补码形式,因此,需要对结果求补,还原为绝対值形式的数值位。
3.在上述1的情况下,差的符号位取被加数(被減数)的符号;在上述2的情况下,符号位为被加数(被減数)的符号取反。、
移码加减运算
移码的和、差等于和、差的补码。
原码乘法运算
1.原码一位乘法
(1)确定乘积的符号位。由两个乘数的符号异或得到。
(2)计算乘积的数值位,乘积的数值部分分为两个乘数的数值部分之积。
2.原码二位乘法
对于n位原码一位乘法来说,需要经过n次“判断加法右移”循环,运算速度较慢。如果对乘数的每两位取值情况进行判断,使每步求出对应于该两位的部分积,则可将乘法速度提高一倍。这种方法被称为原码二位乘法,只需在原码一位乘法的基础上增加少量的逻辑线路,就可实现原码二位乘法。
补码乘法运算
1.补码一位乘法
布斯乘法:将符号位与数值位合在一起参与运算,直接得出用补码表示的乘积,且正数和负数同等对待。
补码乘法运算规则:

2.补码二位乘法
补码乘法也可以采用两位一乘的方法,把乘数分成两位一组,根据两位代码的组合决定加或减被乘数的倍数,形成的部分积每次左移两位。
原码除法运算
先对被除数和除数的取值和大小进行相应的判断,以确定除数是否为0,商是否为0,是否溢出或为不确定的值NaN。判断操作如下:
(1)若被除数为0,除数不为0,或者定点整数除法时|被除数|<|除数|,则说明商为0,余数为被除数,不再继续执行。
(2)若被除数不为0,除数为0,对于整数,则发生“除数为0”异常;对于浮点数,则结果为无穷大。
(3)若被除数和除数都为0,对于整数,则发生除法错异常;对于浮点数,则有些机器产生一个不发信号的NaN,即quiet NaN。
手算除法的基本要点如下:
(1)被除数与除数相减,若够减,则上商为1;若不够减,则上商为0.
(2)每次得到的差为中间余数,将除数右移后与上次的中间余数比较。用中间余数减除数,若够减,则上商为1;若不够减,则上商为0.
(3)重复执行第2步,直到求得的商的位数足够为止。
1.恢复余数除法

2.不恢复余数除法

补码除法运算
1.补码恢复余数除法

采用“够减则上商为1,不够减则上商为0”的上商方式,因此,最后若商为负值,则需要“各位取反,末位加1”来得到真正的商
2.补码不恢复余数除法

浮点数运算
浮点数加减运算
对阶、尾数运算、规格化、舍入处理、溢出判断
浮点数乘除运算
(1)乘法运算:尾数相乘,指数相加;尾数规格化;尾数舍入处理;溢出判断浮点数除法运算
(2)除法运算:尾数相除,阶相减;尾数规格化;尾数舍入处理;溢出判断
运算部件的组成
以一个或多个ALU为核心,加上移位器和存放中间临时结果的若干寄存器,在相应控制逻辑的控制下,就可以实现各种运算。所谓运算部件,通常就是指ALU、移位器、存放临时数据的寄存器,加上用于数据选择的多路选择器和实现数据传送的总线等构成的一个运算数据通路。
定点运算部件
定点运算部件用来实现无符号整数和带符号整数的各种运算,一套完整的定点运算部件,除了核心部件ALU外,还需要有通用寄存器组(或累加器)、多路选择器、状态(标志)寄存器、移位器和用来传送数据的数据总线等。
浮点运算部件
对于得点数秉除运算来说,虽然不需要对阶,但尼数的乘除运算比较复杂,并且速度较慢,所以,实现起来比加减运算复杂得多。与定点数乘除运算一一样,根据机器性能/价格的不同要求,可有不同的实现方案。

posted @ 2020-10-07 23:39  谢志鸿  阅读(74)  评论(0编辑  收藏  举报