二、数据的表示和运算
2.1 数制与编码
2.1.1进位计数制
十进制计数法
有0~9,共10种符号,逢十进一
r进制计数法
基数:每个数码位所用到的不同符号的个数,r进制的基数为r
二进制:0,1
①可使用两个稳定状态的物理器件表示
②0,1正好对应逻辑值假、真。方便实现逻辑运算
③可很方便地使用逻辑门电路实现算术运算
任意进制→十进制
二进制←→八进制、十六进制
真值:符合人类习惯的数字
机器数:数字实际存到机器里的形式,正负号需要被“数字化”
2.1.2 定点数的编码表示
定点数:小数点的位置固定 Eg:996.007 ——常规计数
浮点数:小数点的位置不固定 Eg:9.96007*10^2 ——科学计数法
无符号数:整个机器字长的全部二进制位均为数值位,没有符号位,相当于数的绝对值。
通常只有无符号整数,而没有无符号小数.
有符号数的定点表示
注:可用原码、反码、补码三种方式来表示定点整数和定点小数。还可用移码表示定点整数。
若真值为x,则用[×]原、[x]反、[x]补、[]移分别表示真值所对应的原码、反码、补码、移码
原码:用尾数表示真值的绝对值,符号位“0/1”对应“正/负”
若机器字长为n+1位,则尾数占n位
反码:若符号位为0,则反码与原码相同若符号位为1,则数值位全部取反
“反码”只是“原码”转变为‘补码”的一个中间状态,实际并没有什么用
补码: 正数的补码 = 原码
负数的补码 = 反码末位+1(要考虑进位)
将负数补码转回原码的方法相同:尾数取反,末位+1
移码:补码的基础上将符号位取反。注意:移码只能用于表示整数
2.1.3(拓展)各种码的作用
模运算的性质:带余除法——设x,m∈Z,m>0则存在唯一决定的整数q和r,使得
x=qm+r,0≤r<m 余数的定义
加减运算
2.2 运算方法和运算电路
异或运算的妙用: n bit进行异或,若有奇数个1,则异或结果为1;若有偶数个1,则异或结果为0
门电路的变形画法
2.2.1_1加法器
加法器的基本功能
例:7+12=19
用8bit表示被加数A、加数B、和S
|
缺点:
进位信息是串行产生的,计算速度取决于进位产生和传递的速度。位数越多,运算速度越慢。
注1:电信号到达稳态需要一定时间,因此进位产生速度会有延迟。
注2:串行进位又称为行波进位,每一级进位直接依赖于前一级的进位,即进位信号是逐级形成的。
由于两个输入端允许并行输入n bit,因此这种加法器属于:并行加法器
由于进位信息是串行产生的,因此从“进位方式”看,这种加法器属于:串行进位加法器
综上,很多教材把这种加法器称为“串行进位的并行加法器”
并行进位的并行加法器:所有进位信息都是同时产生的,几乎没有延迟。
特点:运算速度比“串行进位的并行加法器”更快。
OF(Overflow Flag)溢出标志,用于判断带符号数加减运算是否溢出。OF=1溢出;OF=O未溢出
SF(Sign Flag)符号标志,用于判断带符号数加减运算结果的正负性。SF=1结果为负;SF=0结果为正ZF(Zero Flag)零标志,用于判断加减运算结果是否为0。ZF=1表示结果为0;ZF=0表示结果不为0
CF(Carry Flag)进位/借位标志,用于判断无符号数加减运算是否溢出。CF=1溢出;CF=0未溢出
标志位的生成 (电路图不需要掌握,概念需要搞懂)
2.2.1_2并行进位加法器
2.2.1_3多路选择器、三态门
多路选择器( multiplexer,MUX)
作用:电路的“守门员”。在多个输入数据中,只允许其中一个数据通过MUX。
图形:通常用“梯形”表示,有多个输入、一个输出、一个控制信号(梯形的更长的一边是输入端、更短的一边是输出端)
若有k个输入,则控制信号的位数m ≥ ⌈log2k⌉ bit
注:在电路图中,控制信号常用英文缩写“XXXop”表示,图形常用“虚线箭头”
三态门
作用:电路的“守门员”。根据控制信号决定是否让输入的数据通过。
图形:小三角。有一个输入、一个输出、一个控制信号。
三态门的控制信号通常只需要1bit。
op=1表示允许数据通过;
op=0表示不允许数据通过。
三态门 vs 非门
核心区别:“非门”没有控制信号!只有输入和输出
2.2.1_4算数逻辑单元ALU
ALU = Arithmetic and Logic Unit
CPU由控制器、运算器组成
控制器负责解析指令,并根据指令功能发出相应的控制信号(将在计组第五章详细学习)
运算器负责对数据进行处理,如:加减乘除等。
ALU是一种组合逻辑电路,实现了加/减/乘/除、与/或/非等功能。因此ALu是运算器的核心。
由于加减乘除等运算都要基于“加法”来实现,因此加法器是ALU的核心。
考试重点:
如果ALU支持k种功能,则控制信号位数m ≥[log2kl
ALU的运算数、运算结果位数与计算机的机器字长相同
ZF/OF/SF/CF标志位,用于表示本次运算结果的特征(ZF表示运算结果是否为零、OF表示有符号数运算结果是否溢出、SF表示有符号数运算结果的正负性、CF表示无符号数运算结果是否溢出)
这些标志信息通常会被送入PSW程序状态字寄存器
注:有的计算机系统把PSW寄存器称为“标志寄存器FR( Flag Register)”
Cin是进位输入信号、Cout是进位输出信号(类似于带标志位的加法器)
2.2.2定点数的移位运算
移位:通过改变各个数码位和小数点的相对位置,从而改变各数码位的位权。
可用移位运算实现乘法、除法
原码的算数移位――符号位保持不变,仅对数值位进行移位。
右移:高位补0,低位舍弃。若舍弃的位=0,则相当于÷2;若舍弃的位≠0,则会丢失精度
左移:低位补o,高位舍弃。若舍弃的位=O,则相当于×2;若舍弃的位+0,则会出现严重误差
2.2.3_1定点数的加减运算
2.2.3_2无符号数的加减运算
带符号数(补码)的加法∶从最低位开始,按位相加(符号位参与运算),并往更高位进位
带符号数(补码)的减法︰
①“被减数”不变,“减数”全部位按位取反、末位+1,减法变加法
②从最低位开始,按位相加,并往更高位进位
无符号整数的加法∶从最低位开始,按位相加,并往更高位进位
计算机硬件如何做无符号整数的减法:
①“被减数”不变,“减数”全部位按位取反、末位+1,减法变加法
②从最低位开始,按位相加,并往更高位进位
无符号数加法/减法的溢出判断
手算判断溢出的方法:n bit无符号整数表示范围0~2^n-1,超出此范围则溢出
计算机判断溢出的方法:
无符号数加法的溢出判断:最高位产生的进位=1时,发生溢出,否则未溢出。
无符号数减法的溢出判断:减法变加法,最高位产生的进位=0时,发生溢出,否则未溢出。
2.2.3_3补码加减运算电路
n bit加法器
例:
A=1000,B=0111,Cin=0 则F=1111,Cout=0
A=1000,B=0111,Cin=1 则F=0000,Cout=1
例:4bit补码,X=3,Y=4。X补=0011,Y补=0100
X+Y= 0111B =7D
X-Y= 0011+(1011+1)= 1111B =-1D
n bit补码X+Y,按位相加即可
n bit补码X-Y:将减数Y全部按位取反,末位+1,得到[-Y]补,减法变加法
也可用于计算无符号数加减运算
例:无符号数X=8,Y=7
用4bit表示,X=1000B,Y=0111B
X+Y=1111B =15D
X-Y= 1000+ (1000+1)= 10001=1D
运算结果只保留低四位,最高位进位丢弃
无符号整数的加法/减法也可用该电路实现
n bit无符号数X+Y,按位相加即可
n bit无符号数X-Y:将减数Y全部按位取反,末位+1,减法变加法
带标志位的加法器
OF(overflow Flag)溢出标志,用于判断带符号数加减运算是否溢出。OF=1溢出;OF=0未溢出
SF(Sign Flag)符号标志,用于判断带符号数加减运算结果的正负性。SF=1结果为负;SF=0结果为正
ZF(Zero Flag)零标志,用于判断加减运算结果是否为0。ZF=1表示结果为0;ZF=0表示结果不为0
CF(Carry Flag)进位/借位标志,用于判断无符号数加减运算是否溢出。CF=1溢出;CF=0未溢出
2.2.4_1原码的乘法运算
2.2.4_2补码的乘法运算
2.3 浮点数的表示与运算
2.3.1_1浮点数的表示
从科学计数法理解浮点数
浮点数的表示
浮点尾数的规格化
规格化浮点数:规定尾数的最高数值位必须是一个有效值
左规:当浮点数运算的结果为非规格化时要进行规格化处理将尾数算数左移一位,阶码减1。
右规:当浮点数运算的结果尾数出现溢出(双符号位为01或10)时,将尾数算数右移一位,阶码加1。
2.3.1_2_IEEE754
在IEEE754标准中,指数用移码表示。
移码: 补码的基础上将符号位取反。注意:移码只能用于表示整数。