计算机组成原理复习(五)

计算机组成原理之数字

第六章 计算机的运算方法

6.1有符号数和无符号数

一.无符号数
寄存器的位数(机器字长)反映了符号数的表示范围。
以机器字长为16位为例,无符号数可表示数据范围为0——65535,有符号数-32678——+32678
二.有符号数
1.机器数与真值
真值(带符号的数)----------- 机器数(符号为数字化的数)
+0.1011-----------------------------0 1011
-0.1011------------------------------1 1011
+1100--------------------------------01100
-1100---------------------------------11100
PS:上面四个例子都是定点数的表示方式,前两种是在小数定点机中的表示,后两种是在整数定点机中的表示。在计算机中无法直接表示出小数点的位置,故在计算机设计的时候以约定的方式固定小数点的位置。在小数定点机中小数点被约定在符号位之后,即上面标示的空格位置;在整数定点机中小数点的位置被约定在数值最后。
2.原码表示法(带符号的绝对值表示)
定义:整数

       【X】原=0,X     (0<=X<2^n)
       【X】原=2^n-X     (-2^n<X<=0)+1100表示为 0,1100
        -1100表示为 11100

小数

【X】原=X(0<=X<1)
【X】原=1-X (-1<X<=0)
如+0.1100表示为0.1100
-0.1011表示为1.1011

注意,原码中的0有两种表示方式
【+0】原=0,0000;【-0】原=1,0000(数值位位数取决于机器字长)
【+0.0000】原=0.0000;【-0.0000】原=1.0000
源码的特点:简单直接,但在运用原码计算时,操作过程比较复杂。
3.补码表示法
(1)补的概念
通过时钟建立模的概念:-3==+9(mod12)-4==+8(mod 12)
结论:一个负数加上模即为该负数的补数;一个正数和一个负数互为补数时,他们的和为模的值;正数的补数仍为其自身;两个互为补数的数分别加上模结果仍互为补数。
(2)补码定义
整数

       【X】补=0,X         (0<=X<2^n)
       【X】补=2^(n+1)+X     (-2^n<X<=0)(mod 2^(n+1))+1100表示为 0,1100
        -1100表示为 10100

小数

【X】补=X(0<=X<1)
【X】补=2+X (-1<=X<0)(mod 2)
如+0.1100表示为0.1100
-0.1011表示为1.0101

注意,小数位数或精度受到寄存器位数影响
(3)求补码的快捷方式
X为真值,
当真值为正时,【X】原=【X】补
当真值为负时,【X】补=【X】原 各位取反加1,【X】原=【X】补 各位取反加1

注意!
【-0】补=+0】补
根据小数补码定义知【-1.0000】补=2+X=10.0000-1.0000=1.0000,但是-1没有原码形式

4.反码表示法
定义
整数

       【X】反=0,X     (0<=X<2^n)
       【X】反=2^(n+1-1+X     (-2^n<=X<=0)(mod 2^(n+1))
        如+1100表示为 0,1100
        -1100表示为 10011

小数

【X】反=X(0<=X<1)
【X】反=(2-2^-n)+X (-1<X<0)(mod 2-2^-n)
如+0.1100表示为0.1100
-0.1011表示为1.0100

注意:【+0】反=0,0000;【-0】反=1,1111

三种机器数表示的最高位为符号位,书写上用“,”或“.”将符号位与数值位隔开。

对于正数,原码=反码=补码
对于负数,符号位为1,其数值部分有两种方式转变
原码各位取反,即变换反码
原码各位取反+1,即变换为补码

二进制代码范围:0000 0000------1111 1111
无符号数范围:0-------255
原码范围:-127--------+127
补码范围:-128--------+127
反码范围:-127--------+127

已知【Y】补,则【Y】补连同符号位在内每位取反末尾加1则变换为【-Y】补
5.移码表示法(在计算机中补码很难直接判断其值大小)
(1)移码定义
【X】移=2n+X(-2n<=X<2n),X为真值,n为整数位数。即真值增加偏移量。

如X=+10100,【X】移=2^5+10100=1,10100;
X=-10100,【X】移=2^5-10100=0,01100

移码只有整数定义,通常用来表示浮点数制表示的阶码部分
(2)移码和补码的比较
移码个补码之差一个符号位!!
(3)移码的特点
X=0时,【+0】移=1,0000=【-0】移=1,0000
当N=5时,移码可表示的最小真值为-25=-100000
故移码【-100000】移=000000.故最小真值移码为全0

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

一.定点表示:小数点按照约定的方式标出
定点机分为小数定点机和整数定点机。
二.浮点表示
(1)为什么要引入浮点表示?
1.定点表示编程困难;2.定点数的表示范围小;3.存储单元利用率低
(2)浮点表示的一般形式
N=S * rj
S:尾数,j:阶码,r:尾数的基值。在计算机中S应为小数,可正可负,j应为整数,可正可负
当r=2时,N=11.0101=0.110101 * 210=1.10101 * 21=0.00110101 * 2100
在计算机中,第二种和第三种为正确表示形式,且第二种被称为规格化数。
(3)浮点数的表示形式
| Jf | J1J2J3……Jm | Sf | S1S2S3……Sn |
其中Jf为阶符,J1——Jm为阶码的数值部分
Sf为浮点数符,S1——Sn为尾数的数值部分
小数点位置分别在Jm和Sf之间和Sf与S1之间。

+11.0101表示为规格化浮点数形式为0.110101*2^10
在计算机中存储为00,1000.110101

(4)浮点数的表示范围
上溢:阶码大于最大阶码,计算按出错处理
下溢:阶码小于最小阶码,计算按机器零处理
(5)浮点数的规格化形式(尾数基值不同,浮点数的规格化形式不同)
r=2时,尾数最高位为1;
r=4时,尾数最高两位不全为0;
r=8时,尾数最高三位不全为0;
r=16时,尾数最高4位不全为0;
(6)浮点数的规格化
以r=2为例,左规表示尾数左移一位,阶码减1;右规表示尾数右移一位,阶码加1.
由此尾数格式化后浮点数表示范围发生了变化(因为尾数最高位必须为1)。
基数r越大,可表示的浮点数范围越大,但是数值精度越低。
(7)机器零
1.当浮点数尾数为0,不论阶码值为多少,按机器零处理
2.当浮点数阶码等于或小于它能表示的最小阶码,不论尾数值多少,按机器零处理
3.当阶码用移码表示,尾数用补码表示时,机器零由上述两点可表示为0,0000;0.0000,有利于判0电路的实现
三 IEEE754标准
| S | 阶码(含阶符)| 尾数 |
S为数符,小数点位置在阶码和尾数之间。尾数必须为规格化表示,有效位最高位1被隐含。

6.3 定点运算

一 移位运算
1.移位的意义:左移为绝对值扩大,右移为绝对值减小
2.算数移位规则
正数:原码,反码,补码无论左移右移都添0.
负数:原码左右移添0;补码左移添0,右移添1;反码无论左右移都添1.
3.算数移位和逻辑移位的区别
算数移位是有符号数的移位,逻辑移位是无符号数的移位
逻辑右移是低位移丢,高位添0;逻辑左移是高位移丢,低位添0.
二 加减法运算
1.补码加减法公式
[A+B]补=[A]补+[B]补
[A-B]补=[A]补+[-B]补
2.溢出判断
(1)一位符号位判断溢出:参与操作的两个数符号相同,其结果的符号与原操作数的符号不同即为溢出。(最高有效位进位异或符号位进位=1)
(2)两位符号位判断溢出:结果的双符号位相同则未溢出;结果的双符号位不同则为溢出。
双符号位算术右移,低符号位参与运算,高符号位表示真正的符号位。
三 乘法运算
1.乘法可通过加法和移位实现;由乘数末位决定被乘数是否与原部分积相加,然后右移一位形成新的部分积,同时乘数右移一位(末位移丢)高位用来存放部分积的低位;被乘数只与部分积高位相加。
2.原码乘法(原码一位乘)
特点:绝对值运算,用移位次数来判断乘法是否结束(逻辑移位)。
3.补码乘法(补码一位乘,校正法和比较法)
(1)校正法:对于补码一位乘,乘数Y为正时,无论被乘数X正负,都可以按照原码乘法来计算,但是移位要按照补码移位规则;乘数Y为负时,按照原码乘法计算,补码移位规则,但是要在最后结果上加上【-X】补来校正。
(2)比较法(BOOTH算法)
1.被乘数与部分积一般取双符号位,且符号位参与运算;
2.乘数取单符号位来确定最后一步是否校正;
3.乘数末为增设附件位Yn+1,初始值为0;
4.根据Yn,Yn+1的值进行运算,步骤同校正法;
5.按上述算法进行到n+1步,但第n+1位不再移位,仅根据Y0和Y1比较结果确定是否校正;
6.按补码移位规则,部分积为正,右移添0;部分积为负,右移添1(双符号位只有次高符号位参与移位)
YnYn+1为00,Yn+1-Yn=0,部分积右移一位;
YnYn+1为01,Yn+1-Yn=1,部分积加【X】补,右移一位;
YnYn+1为10,Yn+1-Yn=-1,部分积加【-X】补,右移一位;
YnYn+1为11,Yn+1-Yn=0,部分积右移一位;
四 除法运算
原码除法:
约定:小数定点除法|被除数|<|除数|;整数定点除法|被除数|>|除数|;除数被除数不等于0。
(1)恢复余数法
(2)不恢复余数法(加减交替法)
方法:上商1,2Ri-Y*;上商0,2Ri+Y*
特点:上商n+1次,第一次上商判断溢出;移位n次,加法操作n+1次,用移位次数判断除法是否结束。

6.4 浮点四则运算

一 浮点加减运算
1.对阶(对阶原则:阶码应小阶向大阶看齐,这样不会出现溢出错误);
2.尾数求和;
3.规格化:为增加有效数字位数,提高运算精度,必须将求和或求差后的尾数规格化;
(1)规格化数判断
S为正

原码:0.1XXXXXXXXXXXX
补码:0.1XXXXXXXXXXXX
反码:0.1XXXXXXXXXXXX

S为负

原码:1.1XXXXXXXXXXXX
补码:1.0XXXXXXXXXXXX
反码:1.0XXXXXXXXXXXX

无论正负,原码规格化数第一位为1;反、补码符号位和第一数值位相反;

特例
【-0.5】补=1.1000-1】补=1.0000(小数定点机无原码)

(3)
左规:尾数左移一位,阶码加1,直到数符和第一数位不同;
右规:尾数右移一位,阶码加1,直到数符和第一数位不同;
当尾数出现01.XXXXXXX或10.XXXXXX时,尾数溢出需右规。
4.舍入:为提高精度,要考虑尾数右移时丢失的数值位
(1)0舍1入法
(2)恒置1法
5.溢出判断:浮点数溢出完全由阶符判断
阶符为10时,下溢,按机器零处理;
阶符为01时,上溢,须做中断处理。

6.5 算术逻辑单元

一 ALU电路
二 快速进位链
1.并行加法器(数电知识)
由数电知识分析知对进位电路影响最大的因素是低级进位端
Ci=AiBi+(Ai+Bi)Ci-1
AiBi为本地进位,Ai+Bi为传送条件,可简写为Ci=di+ti
Ci-1
2.串行进位链
进位链:传送进位的电路即为进位链
以4位全加器为例,分析得知假设一个与非门延迟为Ty,则n位全加器进位延迟2nTy。
3.并行进位链
(1)单重分组跳跃进位链:n位全加器分为若干小组,小组中的进位同时产生,小组之间采用穿行进位。
(2)双重分组跳跃进位链
n位全加器分为若干大组,大组之间包含若干小组,每个大组中小组的最高进位同时产生,大组之间串行进位。

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