zoukankan      html  css  js  c++  java
  • 计组第三章预习

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

    1. 按位运算

      C语言中按位运算有:符号|表示按位OR运算;符号&表示按位AND运算;符号~表示按位NOT运算;符号^表示按位XOR运算。

    2. 逻辑运算

      几种常见的运算。和并或 逻辑true false

    3. 移位运算辑移位和算术移位

      • 逻辑移位:不考虑符号位,总是把高(低)位移出,低(高)位补0。对于无符号整数的逻辑左移,如果最高位移出的是1,则发生溢出。
      • 算术移位:左移时,高位移出,低位不0,每移一位,如果左移前、后符号为不同,则发生溢出;右移时,低位移出,高位补符号位。
    4. 位扩展和位截断运算

      • 0扩展:用于无符号数,只要在短的无符号数前面添加足够的0即可。
      • 符号扩展:补码表示的带符号整数,通过在短的带符号整数前添加足够多的符号位来扩展。

    二.基本运算部件

    1,串行进位加法器

    • 串行进方式:n位加法器,X与Y逐位相加,位间进位串行传送。
    • 只有一个全加器,数据逐位串行送入加法器中进行运算。进位触发器用来寄存进位信号,以便参与下一次运算。
    • 行进位加法器速度慢的主要原因是进位按串行方式传递,高位进位依赖低位进位。

    2,并行进位加法器

    用n位全加器实现两个n位操作数各位同时相加,这种加法器称为并行加法器。并行加法器中全加器的个数与操作数的位数相同。并行加法器中全加器的位数与操作数的位数相同,可同时对操作数的各位相加。计算机内部大多采用两级或多级先行进位加法器。
    

    img

    3,带标志加法器

    三.定点数运算

    1,补码加减法

    • 运算表达式
    • 判断是否溢出

    2,原码加减运算

    比较两个操作数的符号,对加法实行“同号求和,异号求差”,对减法实行“异号求和,同号求差``求和时,数值位相加,若最高位产生进位则结果溢出``求差时,被加数数值位加上加数数值位的补码
    

    3,移码加减运算

    • 移码的和、差等于和、差的补码。

    4,原码乘法运算

    • 原码一位乘法
      (1)确定乘积的符号位。由两个乘数的符号异或得到。
      (2)计算乘积的数值位,乘积的数值部分分为两个乘数的数值部分之积。
    • 原码二位乘法
      原码两位乘是用两位来决定新的部分积的形成,形成4种状态

    5,补码乘法运算

    • 补码一位乘法
      (1)将符号位和数值位合在一起参与运算,直接得出用补码表示的乘积,且正数和负数同等对待称为布斯乘法
      (2)符号位参与运算,运算的数均以补码表示,被乘数 x 取双符号位,乘数 y 取单符号位
      (3)运算规则
    • 补码二位乘法

    6,原码除法运算

    • 先进行判断:除数是否为0,商是否为0,是否溢出或为不确定的值NaN
    • 手算除法基本要点
    • 与乘法运算一样,要将符号位和数值位分开来处理。商的符号为相除两数符号的异或值,商的数值为两数绝对值之商。
    • 单精度除法,其商的位数一定不会超过n位,因此不会发生溢出;双精度除法,商的位数可能多于n位,因此,可能发生溢出
    • 恢复余数除法
    • 不恢复余数除法
      (1)“正、1、减、负、0、加”:若中间余数为正数,则上商为1,下次做减法;若中间余数为负数,则上商为0,下次做加法

    7,补码除法运算补码恢复余数除法

    补码恢复余数除法采用“够减则上商为1,不够减则上商为0”的上商方式,因此,最后若商为负值,则需要“各位取反,末位加1”来得到真正的商补码不恢复余数除法``被除数与除数同号,被除数减去除数;被除数与除数异号,被除数加上除数。余数与除数同号,商上1,余数左移一位减去除数;余数与除数异号,商上0,余数左移一位加上除数。(注意:余数左移加上或减去除数后就得到了新余数。直到商的位数满足要求为止。
    

      

    四.浮点数运算

    1,浮点数加减运算

    • 对阶、尾数运算、规格化、舍入处理、溢出判断

    2,浮点数乘除运算

    先进行判0处理,规格化操作和溢出判断
    (1)乘法运算:尾数相乘,指数相加;尾数规格化;尾数舍入处理;溢出判断浮点数除法运算
    (2)除法运算:尾数相除,阶相减;尾数规格化;尾数舍入处理;溢出判断
    
  • 相关阅读:
    再次或多次格式化导致namenode的ClusterID和datanode的ClusterID之间不一致的问题解决办法
    Linux安装aria2
    POJ 3335 Rotating Scoreboard 半平面交
    hdu 1540 Tunnel Warfare 线段树 区间合并
    hdu 3397 Sequence operation 线段树 区间更新 区间合并
    hud 3308 LCIS 线段树 区间合并
    POJ 3667 Hotel 线段树 区间合并
    POJ 2528 Mayor's posters 贴海报 线段树 区间更新
    POJ 2299 Ultra-QuickSort 求逆序数 线段树或树状数组 离散化
    POJ 3468 A Simple Problem with Integers 线段树成段更新
  • 原文地址:https://www.cnblogs.com/just-like-this/p/13778983.html
Copyright © 2011-2022 走看看