用心写铭记日常,最迷人的不在远方

第三章预习

高级语言和机器指令中的运算

1.按位运算:符号|按位OR运算;符号&按位AND运算;符号~表示按位NOT运算;符号^按位XOR运算。
2.逻辑运算:符号||按位OR运算;符号&&表示AND运算;符号!表示NOT运算。
···逻辑运算是非数值计算,其操作数只有两个逻辑值:True和False,通常用非0数表示逻辑值True,用全0数表示逻辑值False。
3.移位运算:有逻辑移位和算术移位两种。逻辑移位不考虑符号位,总是把高(低)移出,低(高)位补0。
4.位扩展和位截断运算:进行数据类型转换时,如果遇到一个短数向长数转换,就要进行位扩展运算。进行位扩展运算时,扩展后的数值应保持不变。有两种位扩展方式:0扩展和符号扩展。

  • 基本运算部件

基本的运算部件是加速器、ALU和位移器,ALU的核心部件是加法器
串行进位加法器


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

  • 补码加减法
    无符号数可以按位逻辑运算可以用逻辑门电路实现,带符号整数基本都用补码表示。
    补码加法公式:[x+y]补=[x]补+[y]补(mod 2^n)
    补码减法公式:[x-y]补=[x]补+[-y]补(mod 2^n)

  • 原码的加减法运算
    加法实行“同号求和,异号求差”,对减法实行“异号求和,同号求差”。
    求和时,数值位相加,若最高位进位则结果溢出。和的符号取被加数(被减数)的符号。
    求差时,被加数(被减数)数值位加上加数(减数)数值位的补码,并且按照以下规则产生结果。1、最高数值位产生进位,表示加法结果为正,所得数值位正确。差的符号位取被被加数(被减数)的符号。2、最高数值位没有进位,表示加法结果为负,得到的数值位是补码形式,需要对结果求补,还原为绝对值的形式的数值位。符号位为被加数(被减数)的符号取反

  • 原码的一位乘法
    原则:如果当乘数的某位上为1,则被乘数就加上本身,否则加上0。

  • 补码的一位乘法
    符号位参与运算,运算的数均以补码表示,被乘数 x 取双符号位,乘数 y 取单符号位
    计算被乘数 x 的负数的补码
    累加寄存器(ACC)取 n+2 位(取双符号位,以便进行溢出检查,故最终结果中ACC的前两位是符号位),对应 [x]补 和 [-x]补 ,初始化为0
    乘商寄存器(MQ)初始化为 [y]补(取单符号位),末尾增设附加位(数值为0),共n+2位
    根据y的次低位和最低位的取值确定操作(如下表),由于是有符号数,故移位采用补码的算术右移
    重复上述步骤,判断N+1次,但第N+1次不再移位(共进行N+1次累加和N次右移)
    ACC和MQ的前10位为乘积(前2位为符号),故|XY|补=11.01110001,XY=-0.10001111

  • 浮点数运算
    (1)浮点数加减运算
    1.对阶:使两数的小数点位置对齐。
    2.尾数加减:将对阶后的两尾数按定点加减运算规则求和(差)。
    3.规格化,为增加有效数字的位数,提高运算精度,必须将求和或差后的尾数规格化。
    4.舍入,为提高精度,要考虑尾数有意时丢失的数值位。
    5.判断结果是否溢出。
    (2)浮点数乘除运算
    两浮点数相乘其乘积的阶码为相乘两数阶码之和,其尾数应为相乘两数的尾数之积。
    两个浮点数相除,商的阶码为被除数的阶码减去除数的阶码得到的差,尾数为被除数的尾数除以除数的尾数所得的商。
    参加运算的两个数都为规格化浮点数,乘除运算都可能出现结果不满足规格化要求的问题,因此也必须进行规格化,舍入和溢出判断等操作。规格化时要修改阶码。

posted on 2020-10-08 03:06  Alien林  阅读(66)  评论(0编辑  收藏  举报

levels of contents