第六章计算机的运算方法

文章目录

  • 6.1无符号数和有符号数
      • 一、无符号数
      • 二、有符号数
          • 1.机器数与真值
          • 2.原码表示法
          • 3.补码表示法
          • 4.反码表示法
          • 5.移码表示法
  • 6.2 数的定点表示和浮点表示
      • 定点表示
      • 浮点表示
  • 6.3 定点运算
    • 一、移位运算
    • 二、加减法运算
        • 溢出判断
    • 三、乘法运算
      • 原码一位乘法
      • 补码一位乘法
    • 四、 除法运算
      • 原码除法
      • 补码除法
  • 6.4 浮点四则运算
    • 一、浮点加减运算
    • 二、浮点乘除运算
  • 6.5 算数逻辑单元
    • 一、ALU电路
    • 二、快速进位链

6.1无符号数和有符号数

一、无符号数

第六章计算机的运算方法_第1张图片

二、有符号数

1.机器数与真值

第六章计算机的运算方法_第2张图片

2.原码表示法

第六章计算机的运算方法_第3张图片
第六章计算机的运算方法_第4张图片
第六章计算机的运算方法_第5张图片
第六章计算机的运算方法_第6张图片
第六章计算机的运算方法_第7张图片
故利用补码来做减法

3.补码表示法

第六章计算机的运算方法_第8张图片
第六章计算机的运算方法_第9张图片
-1011=+0101(mod 24)

  • 1011用8421法看出为11,模为24即为16。16-11=5即8421法得0101。故:-1011=+0101(mod 24)
  • 也可用二进制减法做,24为10000,10000-1011=+0101
    第六章计算机的运算方法_第10张图片
    为了多个符号位,之前的计算用的24与现在符号位需要的24;2个24相加为25,故用25作为模
    第六章计算机的运算方法_第11张图片
    第六章计算机的运算方法_第12张图片
  • 此时小数是mod 2,若是mod 4则小数的前面是2位.mod 8则小数的前面是3位。mod 16则小数的前面是3位
    第六章计算机的运算方法_第13张图片
    第六章计算机的运算方法_第14张图片
    真值为负时,补码转到原码符号位不变,每位取反,末位加1
    第六章计算机的运算方法_第15张图片
    第六章计算机的运算方法_第16张图片
    70=64+4+2即是1000110
    负数的补码更好算的方法:符号位不变,X1的非,X2的非到XK的非,后面的10000等照写,得到的就是这个负数的补码
    -1有补码无原码
4.反码表示法

第六章计算机的运算方法_第17张图片
除符号位,负数的反码:各位取反,末位不加

第六章计算机的运算方法_第18张图片
第六章计算机的运算方法_第19张图片
第六章计算机的运算方法_第20张图片
第六章计算机的运算方法_第21张图片
第六章计算机的运算方法_第22张图片
(1)当Y是正数的情况,(2)为当Y是负数的情况

5.移码表示法

第六章计算机的运算方法_第23张图片
31用32-1表示即25-1即100000-1为11111
第六章计算机的运算方法_第24张图片
第六章计算机的运算方法_第25张图片补码换到移码符号位取反即可
第六章计算机的运算方法_第26张图片
第六章计算机的运算方法_第27张图片

6.2 数的定点表示和浮点表示

定点表示

第六章计算机的运算方法_第28张图片

浮点表示

第六章计算机的运算方法_第29张图片
第六章计算机的运算方法_第30张图片
尾数的绝对值<=1,阶码是整数
r=2:尾数当中每一位二进制数表示了尾数中的一位2进制数。
r=4:尾数当中的两位二进制数表示一位4进制的尾数
r=8:尾数中的三位二进制数表示一位8进制的尾数
r=16:4位二进制数表示一位16进制数

 当r=2 N=11.0101——>=0.110101×210因为右移两位数据,数据本身大小变为原来的1/4,则阶码部分变为10,10是二进制表示即十进制中的2即22即就是4
 N=0.00110101×2100小数点往左移了四位,变为原来的1/16,阶码中而二进制中的100就是4.即24=16
二进制:-11,-10,-1,0,1,10,11

第六章计算机的运算方法_第31张图片
第六章计算机的运算方法_第32张图片
第六章计算机的运算方法_第33张图片
第六章计算机的运算方法_第34张图片
r=2——>左规:数据向左移动;右规:数据向右移动,数据值变为原来的1/2
第六章计算机的运算方法_第35张图片
第六章计算机的运算方法_第36张图片
19=16+2+1即10011
19/128即将10011除128,128=27即10011数据相对于小数点右移7位;每移一位相当于除以2。变为0.0010011
浮点机当中用分号将阶码和尾数隔开
第六章计算机的运算方法_第37张图片
第六章计算机的运算方法_第38张图片
第六章计算机的运算方法_第39张图片

6.3 定点运算

一、移位运算

第六章计算机的运算方法_第40张图片
对于计算机来说,都是数据移动而小数点的位置不变
左移一位,机器数的真值变为原来的2倍;右移变为原来的1/2倍,有时可能因为低位丢掉影响了精度
第六章计算机的运算方法_第41张图片
左移最高位会被丢掉,最低位补;
右移最低位丢掉,符号位的下一位高位补
即空出的地方补

第六章计算机的运算方法_第42张图片
左移一位,真值变为原来的2倍
对于正数,三种机器数移位后符号位均不变,左移时最高位丢1,结果出错;右移时最低位丢1,影响精度。
第六章计算机的运算方法_第43张图片
负数原码左移时,高位丢1,结果出错,右移时,低位丢1,影响精度
第六章计算机的运算方法_第44张图片
负数的补码左移时,高位丢0(原码的1),结果出错;右移时,低位丢1,影响精度

第六章计算机的运算方法_第45张图片
第一行第四个:左移——>负数的反码最低位添1,最高位丢掉,符号位不变
第二行第四个:右移——>负数的反码最高位添1,最低位丢掉
第六章计算机的运算方法_第46张图片
算数移位符号位不参与移位运算,逻辑移位全部参与移位运算
可以用带进位的移位将丢掉的最高位记录在进位中

二、加减法运算

第六章计算机的运算方法_第47张图片
第六章计算机的运算方法_第48张图片

  • 对整数来说mod 2n+1不管是正数还是负数它(A)的补码形式都可以用X+2n+1表示(不用区分加数或被加数的正负,直接A的补码表示为2n+1+A)
  • 对小数来说,A的补码可以直接变为2+A
  • 对于补码,连同符号位一起运算,和的符号通过计算过程自动产生,符号位产生的进位自动丢掉

第六章计算机的运算方法_第49张图片
由[A+B]求A+B——>直接将[A+B]取反末位加1
第六章计算机的运算方法_第50张图片
== -B的补码=将B的补码数值位每位取反,末位加1==
练习一:在小数定点机中计算结果为大于1的数发生溢出
练习二:整数定点机中机器字长为8位计算结果-138超出了这种机器所能表示的范围(-128~127),发生上溢

溢出判断

第六章计算机的运算方法_第51张图片
数值最高位进位和符号位进位不同(异或结果为1)则溢出

第六章计算机的运算方法_第52张图片
当两位符号位不同,表示溢出。不论是否发生溢出,高位符号位表示真正的符号。
双符号位的模可以变为2n+2
第六章计算机的运算方法_第53张图片
GA,GS标记做加法、减法。

在整数定点机中,机器数采用补码,双符号位,若它的十六进制表示为C0H,则它的真值为(-64)。

三、乘法运算

第六章计算机的运算方法_第54张图片
第六章计算机的运算方法_第55张图片
第六章计算机的运算方法_第56张图片
最终结果就是0.1000 1111
第六章计算机的运算方法_第57张图片

原码一位乘法

第六章计算机的运算方法_第58张图片
第六章计算机的运算方法_第59张图片

第六章计算机的运算方法_第60张图片
部分积右移最低位被移到乘数的最高位当中得新的部分积,乘数也右移,最低位丢掉
第六章计算机的运算方法_第61张图片

第六章计算机的运算方法_第62张图片
移位次数控制乘法操作的结束
乘数最后一位为1,部分积+X,右移一位
乘数最后一位为0,部分积+0,右移一位
最后符号位异或

补码一位乘法

第六章计算机的运算方法_第63张图片
第六章计算机的运算方法_第64张图片
2-n=2-n+1-2-n
第一位可以看出最后一位没有移位
第六章计算机的运算方法_第65张图片

第六章计算机的运算方法_第66张图片

  • 第三列为附加位,开始的时候此位=0.
  • 比较第三列和第二列最后一位(0-1=-1),则需要加上[-x]再右移(因为是补码则算数右移),此时补码是负数右移补1。等等依次类推步骤
  • 第二行第一列,蓝色的1是由于此时补码是负数右移补1
  • 第三行第一列,蓝色的0是由于此时补码是正数右移补0
  • 到第五行,0-1=-1则加上[-x]得到结果,此时不用再移位——>最后一步不移位

[X.Y]中Y为负数,加上[-x];Y是正数则不用

第六章计算机的运算方法_第67张图片
第六章计算机的运算方法_第68张图片


 符号位参与运算,得到的也是补码形式
 被乘数x取双符号参与运算,部分积初值为0。
 乘数y取单符号位,乘数y末位增加一个附加位0.
判断y的最后两位:

  • 倒数第一位-倒数第二位=0——>直接右移一位
  • 倒数第一位-倒数第二位>0——>加x后右移
  • 倒数第一位-倒数第二位<0——>加-x后右移
  • 最后一位不右移

四、 除法运算

第六章计算机的运算方法_第69张图片

  • 被除数0.1011小于除数0.1101,上商为0,然后被除数后添0和右移一位的除数作比较。此时被除数大于右移一位的除数则上1。相减,得数添0与右移两位的除数比较。
    第六章计算机的运算方法_第70张图片

原码除法

第六章计算机的运算方法_第71张图片
若不满足约定,即,小数定点运算中被除数的绝对值>除数的绝对值,(即第一步发现上商为1)——>发生溢出
整数定点除法中被除数的绝对值>除数的绝对值,则发生了溢出

第六章计算机的运算方法_第72张图片

  • 第一行上商后+[-y*],得到第二行第一列的余数为负数,商上为0不能上1则说明减法操作不对,要把被减掉除数之后的余数要进行恢复——>加上y的补码恢复余数
  • 此时得到的余数值与原来的被除数相同,将此时余数的值左移(逻辑左移)一位
  • 移位后的再做减法操作和[-y*]进行比较
    依次循环第六章计算机的运算方法_第73张图片
    余数正,上商1,左移一位(被除数和商都左移),减除数;据它的值再进行上商.
    余数为负,上商0,加除数y恢复余数,余数左移一位,再减去除数y得到新的余数。再判断新的上商是上0还是1;若这个新的余数>0,则上商1;余数<0,则上商0。

第六章计算机的运算方法_第74张图片
余数>0,上商为1,余数左移一位并加上[y*]除数
余数<0,上商为0,余数左移一位并加上[-y*]除数
最后符号位异或

第六章计算机的运算方法_第75张图片
第六章计算机的运算方法_第76张图片
第一次上商是1则溢出

第六章计算机的运算方法_第77张图片

补码除法

余数[Ri]与[y]同号——>上商为1,新余数左移一位+[-y]
余数[Ri]与[y]异号——>上商为0,新余数左移一位+[y]
最后一步,左移一位,末位商恒置1

6.4 浮点四则运算

浮点运算的特点:阶码(指数)运算和尾数(基值)运算分开进行

一、浮点加减运算

第六章计算机的运算方法_第78张图片

  • 阶码对齐则可以进行加减运算
  • 求阶差用补码形式实现
  • 阶码减小一位,尾数就要左移一位保证数据不发生变化
  • 而计算机中x向y看齐,尾数左移有可能使1被移掉,引发错误,故尾数左移并不合适
  • 若y向x看齐,最右侧数据位丢失,只会影响精度而不影响大小
  • 小阶向大阶看齐
    第六章计算机的运算方法_第79张图片
  • 这道题中阶码四位,阶符占了两位;尾数六位,尾符占了两位。
  • 阶码在前;尾数在后(2位阶符,2位阶码;2位尾符.4位尾数)
  • jx补-jy补=jx补+[-jy补]
  • [-jy补]=原码取反加1
  • 对阶后就可以尾数求和,但此时得到的是不规格化的数
    第六章计算机的运算方法_第80张图片
  • 规格化是为了尽可能的提高在计算机中浮点数的表示精度
  • 若尾数的基值r=4,则 1 4 ≤ ∣ S ∣ < 1 \frac{1}{4} \leq|S|<1 41S<1
  • S表示尾数
  • 原码无论正负,第一位数总为1
  • 补码,符号位和第一数位不同
    第六章计算机的运算方法_第81张图片
    第六章计算机的运算方法_第82张图片
  • 尾数的绝对值大于1,尾数溢出要右规
  • 两个正数相加就可能会造成01.XXXXX这种形式的溢出

第六章计算机的运算方法_第83张图片
阶符、数符均取2位
第六章计算机的运算方法_第84张图片

  • 恒置1法,不管末位丢掉什么数据,计算结果的最低有效位均为1
  • 如果采用0舍1入法进行舍入处理,则0.01010110011舍去最后一位后,结果为(0.0101011010)。

在这里插入图片描述
第六章计算机的运算方法_第85张图片

第六章计算机的运算方法_第86张图片

  • 整个浮点数发生的溢出,阶码比+127还大就发生了上溢;
  • 阶码比-128还小就是下溢。下溢作为0看,上溢进入出错处理
  • 在浮点数中,当数的绝对值太小,以至于小于能表示的数据时,称为浮点数的下溢

二、浮点乘除运算

第六章计算机的运算方法_第87张图片
设浮点数阶码为双符号位补码表示,尾数用单符号补码或原码表示

  1. 阶码相加减(乘积阶码为[jx]+[jy];商的阶码为[jx]-[jy])
  2. 尾数相乘或除;被除尾数的绝对值一定小于除数尾数的绝对值
    被除数尾数绝对值大于除数尾数绝对值,则被除数进行调整——>被除数尾数右移,阶码+1,直到|被除数尾数|<|除数尾数|
  3. 结果向左规格化并舍入处理
  4. 判断溢出:尾数不可能发生溢出,运算结果可能发生溢出

在这里插入图片描述第六章计算机的运算方法_第88张图片

第六章计算机的运算方法_第89张图片
第六章计算机的运算方法_第90张图片

6.5 算数逻辑单元

一、ALU电路

运算器
第六章计算机的运算方法_第91张图片

  • Ai、Bi表示参加运算的数据,Fi为输出。
  • Ki决定是什么类型的运算
  • 输入、输出端都要连接寄存器,保存运算结果
  • 影响加法器运算速度的就是进位链

二、快速进位链

第六章计算机的运算方法_第92张图片

  • A、B输入,C-1低位进位。C1向高位的进位,S某一位的输出和。
  • 若进位快,则运算结果快
  • 若ti=1,那么Ci=Ci-1
    第六章计算机的运算方法_第93张图片
    d1=A1×B1;
    t1=A1或上B1
    串行运算器结构简单,其运算规律是(由低位到高位逐位运算)。
    第六章计算机的运算方法_第94张图片
    电路太过复杂
    第六章计算机的运算方法_第95张图片
    第六章计算机的运算方法_第96张图片
    第六章计算机的运算方法_第97张图片
  • 双重分组跳跃进位链是将n位全加器分为几个大组,大组内又包含若干小组,每个大组内所包含的各小组的最高位进位是同时产生的,大组和大组采用串行进位。
    第六章计算机的运算方法_第98张图片
    第六章计算机的运算方法_第99张图片第六章计算机的运算方法_第100张图片
    第六章计算机的运算方法_第101张图片

你可能感兴趣的:(#,计算机组成原理笔记)