其他分享
首页 > 其他分享> > 第三章—运算方法和运算部件|预习

第三章—运算方法和运算部件|预习

作者:互联网

高级语言和机器指令

C程序中涉及的运算
按位运算 数值运算,实现掩码操作

运算时将两个操作数中对应各二进制位按照指定的逻辑运算规则进行计算

“|”:按位OR运算
“&”:按位AND运算
“~”:按位NOT运算
“^”:按位XOR运算

逻辑运算 非数值计算,其操作数只有两个逻辑值:True和False

通常用菲0数表示逻辑值True,用全0数表示逻辑值False

“||”:按位OR运算
“&&”:按位AND运算
“!”:按位NOT运算

####### 移位运算:逻辑移位和算术移位

位扩展和位截断运算
MIPS指令中涉及的运算

MIPS所有指令都是32位的,操作码占用高6位(bit31-bit26)表示,低26位按格式划分为R型、I型和J型

基本运算部件 加法器、ALU(核心部件是加法器)和移位器

串行进位加法器

全加器:用来实现两个本位数加上低位生成一位本位以及一位向高位的进位

并行进位加法器
带标志加法器
算术逻辑部件

定点数运算

补码加减运算

假定了A,B都是正数

原码加减运算
移码加减运算
原码乘法运算
原码一位乘法
原码二位乘法
补码乘法运算
补码一位乘法

被乘数和部分积均取2位符号位,因此乘数和被乘数均要在最高位扩位。补码扩位原则:正数补0,负数补1.
乘数取一位附加位,作为乘数的最后一位,在移动时作为最低位处理,初始化值为0。
每次都对乘数末两位(包括附加位)判断,数值为00和11时进行右移1位操作,数值为01时部分积+[被乘数]补后进行移位,数值为10时部分积-[被乘数]补后进行移位。
移位次数与乘数数值位的位数有关,但最后一次移位完成后还需要进行步骤3,但不移位。

补码两位乘法

部分积和被乘数采用3位符号位,高位扩位。乘数高位用两位符号位+尾数,末尾加一位附加位,初始值为0
对乘数的末三位判断,情况如下:
000:直接移两位
001:部分积+被乘数的补码后移动两位
010:部分积+被乘数的补码后移动两位
011:部分积+2被乘数的补码(也就是被乘数左移一位的结果)后移动两位
100:部分积-2被乘数的补码(也就是被乘数左移一位的结果)后移动两位
101:部分积-被乘数的补码后移动两位
110:部分积-被乘数的补码后移动两位
111:直接移两位
乘数的尾数分奇数偶数两种情况:偶数时采取两位符号位,奇数时采取一位符号位。偶数情况下:移位次数为尾数位数/2,最后一步仍然要对末三位判断,但是不移位;奇数情况下移位次数为尾数位数/2+1次,最后一步也要对末三位判断,然后移动一位(注意)

原码除法计算

(1)原码的恢复余数的除法
由于除法通过减法实现,当商上1时,可将比较数据大小的减法操作与除法操作中的减法操作合并,即商上1后继续后面的除法操作。商上0时表明不够减,不应该直接执行除法运算中的减运算,但因试商时的比较操作已经实施了一次减法,因此,需将余数恢复到试商前的值,这可加除数来是想,这种方法称为恢复余数法除法。
例如:x = 0.1001 y=0.1011 求 x/y
(2)原码的不恢复余数的除法
不恢复余数法又称加减交替法,是对恢复余数法的改进,其特点是当试商结果为负时不再恢复余数,而是根据所得余数的符号作下列处理:

浮点数运算

浮点数加减运算
浮点数乘除运算

①阶码运算:阶码求和(乘法)或阶码求差(除法)
即 [Ex+Ey]移= [Ex]移+ [Ey]补
[Ex-Ey]移= [Ex]移+ [-Ey]补
②浮点数的尾数处理:浮点数中尾数乘除法运算结果要进行舍入处理
例题:X=0 .0110011211,Y=0.11011012-10
求X※Y
解:[X]浮: 0 1 010 1100110
[Y]浮: 0 0 110 1101101
第一步:阶码相加
[Ex+Ey]移=[Ex]移+[Ey]补=1 010+1 110=1 000
1 000为移码表示的0
第二步:原码尾数相乘的结果为:
0 10101101101110
第三步:规格化处理:已满足规格化要求,不需左规,尾数不变,阶码不变。
第四步:舍入处理:按舍入规则,加1进行修正
所以 X※Y= 0.1010111※2+000

运算部件的组成

ALU、移位器、存放临时数据的寄存器,用于数据选择的多路选择器、实现数据传送的总线构成一个运算数据通路

标签:第三章,运算,符号,补码,预习,被乘数,余数,乘数
来源: https://www.cnblogs.com/tizipei/p/13769661.html