zoukankan      html  css  js  c++  java
  • 第三章运算方法和运算部件预习

    3.1高级语言和机器指令中的运算
    3.1.1 C程序中涉及的运算
    1.按位运算:符号|表示按位OR运算;符号&表示按位AND运算;符号~表示按位NOT运算;符号^表示按位XOR运算。
    2.逻辑运算:符号||表示按位OR运算;符号&&按位AND运算;符号!表示按位NOT运算。
    3.移位运算:有逻辑移位和算术移位两种。逻辑移位不考虑符号位,总是把高(低)移出,低(高)位补0。
    4.位扩展和位截断运算:进行数据类型转换时,如果遇到一个短数向长数转换,就要进行位扩展运算。进行位扩展运算时,扩展后的数值应保持不变。有两种位扩展方式:0扩展和符号扩展。

    3.1.2 MIPS指令中涉及的运算
    MIPS指令系统涉及的运算有按位逻辑运算、逻辑移位、算数移位、带符号整数的加减乘除、无符号整数的加减乘除、带符号整数的符号扩展、无符号数的0扩展、单精度浮点数加减乘除、双精度浮点数加减乘除。

    3.2基本运算部件
    基本的运算部件是加法器、ALU和移位器、ALU的核心部件是加法器。
    (1)串行进位加法器

    ①只有一个全加器,数据逐位串行送入加法器中进行运算,进位触发器用来寄存进位信号,便于下次运算。
    ②操作数长n位,加法就要分n次进行,每次产生一位和,并且串行逐位地送回寄存器。
    ③把n个全加器串接起来,可以进行两个n位数的相加。
    ④串行进位(行波进位),每一级进位直接依赖于前一级的进位,所以进位信号是逐级形成。
    ⑤最长运算时间主要是由进位信号的传递时间决定的,位数越多延迟时间就越长。

    (2)并行进位加法器

    先行进位(同时进位):各级进位信号同时形成。
    加快进位产生和提高传递的速度,即将各级低位产生的本级G和P信号依次同时送到高位各全加器的输入,以使它们同时形成进位信号。
    (3)带标志加法器
    n位无符号加法器只能用于两个n位二进制数相加,不能进行减运算,也不能进行带带符号整数的加减运算。
    3.2.1算数逻辑部件

    定点数的运算
    3.3补码加减法
    无符号数可以按位逻辑运算可以用逻辑门电路实现,带符号整数基本都用补码表示。
    补码加法公式:[x+y]补=[x]补+[y]补(mod 2^n)
    补码减法公式:[x-y]补=[x]补+[-y]补(mod 2^n)
    3.4原码的加减法运算
    加法实行“同号求和,异号求差”,对减法实行“异号求和,同号求差”。
    求和时,数值位相加,若最高位进位则结果溢出。和的符号取被加数(被减数)的符号。
    求差时,被加数(被减数)数值位加上加数(减数)数值位的补码,并且按照以下规则产生结果。1、最高数值位产生进位,表示加法结果为正,所得数值位正确。差的符号位取被被加数(被减数)的符号。2、最高数值位没有进位,表示加法结果为负,得到的数值位是补码形式,需要对结果求补,还原为绝对值的形式的数值位。符号位为被加数(被减数)的符号取反
    3.3原码的一位乘法
    原则:如果当乘数的某位上为1,则被乘数就加上本身,否则加上0。
    3.5补码的一位乘法
    符号位参与运算,运算的数均以补码表示,被乘数 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

    3.6浮点数运算
    浮点数加减运算
    1.对阶:使两数的小数点位置对齐。
    2.尾数加减:将对阶后的两尾数按定点加减运算规则求和(差)。
    3.规格化,为增加有效数字的位数,提高运算精度,必须将求和或差后的尾数规格化。
    4.舍入,为提高精度,要考虑尾数有意时丢失的数值位。
    5.判断结果是否溢出。

    浮点数乘除运算
    两浮点数相乘其乘积的阶码为相乘两数阶码之和,其尾数应为相乘两数的尾数之积。
    两个浮点数相除,商的阶码为被除数的阶码减去除数的阶码得到的差,尾数为被除数的尾数除以除数的尾数所得的商。
    参加运算的两个数都为规格化浮点数,乘除运算都可能出现结果不满足规格化要求的问题,因此也必须进行规格化,舍入和溢出判断等操作。规格化时要修改阶码。

  • 相关阅读:
    通用权限系统的一些想法
    分享一个c#t的网页抓取类
    css实现打印分页控制
    vue + ts 工作日设置功能实现
    cmd/powershell常用命令 git常用命令
    css选择器 兄弟选择器 相邻兄弟选择器 子元素选择器
    css变量复用 全局变量-局部变量
    pdf.js在线预览效果
    花生壳用法
    百度地图定位,获取省市区
  • 原文地址:https://www.cnblogs.com/ztxztx/p/13779846.html
Copyright © 2011-2022 走看看