计算机组成原理 The Principle of Computer 主讲 陈付龙 西北工业大学计算机学院 (2007年9月)
第2章 计算机中的数据信息的表示 2.1 进位计数制与数制转换 2.2 带符号数的表示 2.3 数的定点表示和浮点表示 2.4 非数值型数据的表示 2.5 十进制数串的表示 2.6 数据校验码 计算机组成原理 西北工业大学计算机学院
2.1 进位计数制与数制转换
1 常用数制 (1)数值的构成 基数:相邻位权之比 位权:基数的 i 次方 ( i 为与位置对应的自然数) 1 常用数制 (1)数值的构成 一个数值各位数字(数码)表示的值不仅与该数字有关,且与所在位置有关。 【例】数32343.43可以分解为: 3×104+2×103+3×102+4×101+3×100+4×10 -1+3×10 -2 位权 基数:相邻位权之比 位权:基数的 i 次方 ( i 为与位置对应的自然数) 每个数位上的数字所表示的值=该数码×位权 计算机组成原理 西北工业大学计算机学院
(2)R进制 xnxn-1…x0.x-1x-2…x-m =xn*Rn+xn-1*Rn-1+…+x0*R0+x-1*R-1+x-2*R-2+…+x-m*R-m 小数点右移n 位——相当于乘以R n(增加R n 倍) 小数点左移n 位——相当于除以R n (为R n 份之一) 思考: m位R进制数,其最大数值是多少?最小数值是多少? 计算机组成原理 西北工业大学计算机学院
(3)常用数制 十进制 二进制 八进制 十六进制 R进制 基数 10 2 8 16 R 进位 逢10进1 逢2进1 逢8进1 逢16进1 可用 数码 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 ABCDEF 0…R-1 计算机组成原理 西北工业大学计算机学院
2 R进制数转换为十进制数 ② (11011011)2 (219)16 (210)8 (219)10 简便算法: 位权展开法 1 1 0 1 1 0 1 1 128 64 32 16 8 4 2 1 计算: 128+64+16+8+2+1= 219 位权展开法 【例一】将下列数值转换为十进制数 (101.01)2 (205.4)8 (AF.8)16 解: (101.01)2= 1×22+0×21+1×20+0×2 -1+1×2-2 =(5.25)10 (205.4)8= 2×82+0×81+5×8 0+4×8 –1 =(133. 5)10 (AF.8)16= 10×16 1 +15×160+8×16 -1 =(175. 5)10 【思考】以下数值中最大的和最小的分别是哪个? ① (1234)8 (1234)16 (1234)5 (1234)10 ② (11011011)2 (219)16 (210)8 (219)10 计算机组成原理 西北工业大学计算机学院
3 十进制数转换为R进制数 将整数部份和小数部份分开来算,位权展开法 整数部份:除以R取余数,直到商为0,余数从自下而上排列 到小数部份为0或规定精度为止 【例】将(100.345)10 转换为二、八、十六进制 2 100 低位 2 50 0 8 100 0.345 2 25 0 8 12 4 × 2 高位 2 12 1 8 1 4 0.690 2 6 0 0 1 × 2 2 3 0 1.380 2 1 1 16 100 × 2 0 1 16 6 4 0.760 高位 0 6 × 2 1.520 × 2 …… 低位 结果: (100.345)10 ≈(1100100。0101)2 (100)10= (144)8 = (64)16 计算机组成原理 西北工业大学计算机学院
4 八、十六进制与二进制相互转换 法则:以小数点为界,每个八进制数对应三位二进制数,每个十六进制数对应四位二进制数。 4 八、十六进制与二进制相互转换 法则:以小数点为界,每个八进制数对应三位二进制数,每个十六进制数对应四位二进制数。 【注意】小数部分不足之处应补零 记住—— 8 4 2 1 1 1 1 1 【例】 (2C1.D)16=(0010 1100 0001. 1101)2 2 C 1 D 【例】 (71.23)8=( 111 001 . 010 011)2 7 1 2 3 【例】 ( 11 0110 1110 . 1101 01)2 = (36E.D4)16 3 6 E D 4 01应补00为0100 计算机组成原理 西北工业大学计算机学院
2-8进制转换 2 000 001 010 011 100 101 110 111 8 1 3 4 5 6 7 2-16进制转换 2 0000 0001 0010 0011 0100 0101 0110 0111 8 1 3 4 5 6 7 1000 1001 1010 1011 1100 1101 1110 1111 9 A B C D E F 计算机组成原理 西北工业大学计算机学院
5 二进制数的简单运算 (1)算术运算(加减乘除) 加法:逢2进1 0+0=0 0+1=1 1+0=1 1+1=10 (进位) 5 二进制数的简单运算 (1)算术运算(加减乘除) 加法:逢2进1 0+0=0 0+1=1 1+0=1 1+1=10 (进位) 减法:借1当2 0-0=0 1-0=1 1-1=0 0-1=1(借位) 乘法:加法+移位 0 * 0=0 0*1=0 1*0=0 1*1=1 除法:减法+移位 0÷1=0 1÷1=1 例三 1110 × 101 1000110 例四 110 10 1100 10 100 例一 1101 + 101 10010 例二 1011 - 101 110 计算机组成原理 西北工业大学计算机学院
5 二进制数的简单运算(续) (2)逻辑运算 与运算:都是1时才为1,运算符:A∧B 、A×B 或 A·B 例:设A=1101,B=1001,求:A∧B 、 A∨B、A B、A 例一 A∧B 1101 ∧ 1001 1001 例二 A∨B 1101 ∨ 1001 例三 A∞B 1101 1011 0110 例四 A A=0010 计算机组成原理 西北工业大学计算机学院
2.2 带符号数的表示
一个数的表示方法,也就是它们在计算机中的组成格式和编码规则。 当一个数送入计算机进行运算处理时,首先将其转换为二进制数,同时还要解决以下几个问题: 1.怎样表示数的符号 2.怎样确定小数点的位置 计算机组成原理 西北工业大学计算机学院
2.2.1 机器数和真值 机器数是指数在计算机中的表示形式,一般是采用某种编码形式表示带符号的二进制数。 真值是指机器数所对应的实际数值。 一般机器数有如下特点: (1)数的符号采用二进制代码化,0代表“+”,1代表“-”。通常将符号的代码放在数据的最高位 (2)小数点本身是隐含的,不占用存储空间 (3)每个机器数据所占的二进制位受机器硬件规模的限制,与机器字长有关,超过机器字长的数值要舍去 计算机组成原理 西北工业大学计算机学院
2.2.2 机器数的原码表示法 1、规则:机器数的最高一位表示符号,“0”表示正号;“1”表示负号,后面各位用数的绝对值表示。 2、定义: 小数原码的定义为: 整数原码的定义为: [X]原 = [X]原 = [X]原为机器数的原码,X为真值。 【例】求X=0.1011和X=-0.1011的原码 X=0.1011时, [X]原 = 0.1011 X=-0.1011时, [X]原 = 1 - (-0.1011) = 1.1011 计算机组成原理 西北工业大学计算机学院
(1) 原码的最高位表示数的符号,0表示正号,1表示负号。 3、性质: (1) 原码的最高位表示数的符号,0表示正号,1表示负号。 假设小数X的原码为:[X]原 = XS.Xn-1Xn-2…X2X1X0,Xs是符号位,可用下式来表示一个数的原码: [X]原 = Xs + |X| (2) 对于定点小数,把Xs作为数值位看待时,其位权为1,则有: 当Xs=0时,1>[X]原≥0,故1>X=[X]原≥0; 当Xs=1时,2>[X]原≥1,故0≥1-[X]原>-1 即 2>[X]原≥0,其范围是:0~2-2-(n-1),真值为1>X>-1,其范围是:-(1-2-(n-1))~+(1-2-(n-1))。 (3)0不唯一 定点小数 [+0]原 = 0.0…0 [-0]原 = 1.0…0 整数 [+0]原 = 00…0 [-0]原 = 10…0 计算机组成原理 西北工业大学计算机学院
2.2.3 机器数的补码表示法 1. 补码的定义 整数补码定义: [X]补 = [X]补为整数X的补码,X为任意整数,n为整数的位数。 [X]补=2n+1+X=24+1+ X =100000-1011=10101 小数补码定义: [X]补= [X]补是小数X的补码,X为任意小数,2为模数。小数的补码就是模为2 的补码。 计算机组成原理 西北工业大学计算机学院
[-0]补= 2n+1-00…0 = 2n+1=00…0 (mod 2n+1) 小数0 [+0]补= 0.00…0 2.补码的性质 (1) 在补码表示法中,0的补码是唯一的,即 整数0 [+0]补= 00…0 [-0]补= 2n+1-00…0 = 2n+1=00…0 (mod 2n+1) 小数0 [+0]补= 0.00…0 [-0]补= 2-0.00…0 = 2 =0.00…0 (mod 2) (2) 假设一整数X的补码表示为:[X]补=XSXn-1Xn-2…X1X0,XS是补码的符号位,标志整数X的符号,XS=0时,X为正数;XS=1时,X为负数。 (3) 补码的表示范围是: 正整数 2n>X≥0 负整数 0≥X≥-2n 负数的范围比正数范围大,即多表示一个数-2n。 当X=-2n时,它的补码为: [X]补 = [-2n]补 = 2n+1 -2n = 2n = 100…0 计算机组成原理 西北工业大学计算机学院
[X]补 = 2n+1·XS + X 这里XS为符号, XS= 这是因为X为正时,XS=0,[X]补 = 2n+1·0 + X = X ;X为负时,XS=1,[X]补 = 2n+1·1 + X = 2n+1 + X,符合补码的定义。 (5) 补码与真值的关系 设[X]补=XSXn-1Xn-2…X1X0,由性质4可知,[X]补 = 2n+1·XS + X,可以证明 X = [X]补 - 2n+1·XS = -2n·Xs + Xn-1Xn-2…X1X0 反过来,若X = -2n·XS + Xn-1Xn-2…X1X0, 则 [X]补 = 2n+1·XS + X = XSXn-1Xn-2…X1X0 (6)补码的一项算术运算特性 [X/2]补是把[X]补中各位连同符号位一起都右移一位,符号位保持不变。 计算机组成原理 西北工业大学计算机学院
3. 补码的求法 当0≥X≥-2n时,数X的补码是:符号位为1,数值位是其真值X的数值位取反加1。也可由X的原码[X]原求得补码[X]补:[X]补等于[X]原除符号位外求反加1。反过来可由X的补码[X]补求得原码[X]原:[X]原等于[X]补除符号位外求反加1。 当X为小数时,若X为负数,则X的补码是:符号位为1,数值位是其真值X 的数值位取反末位加1。也可由X的原码[X]原求得补码[X]补:[X]补等于[X]原除符号位外求反末位加1。反过来可由X的补码[X]补求得原码[X]原:[X]原等于[X]补除符号位外求反末位加1。 计算机组成原理 西北工业大学计算机学院
假设[X]补=XSXn-1Xn-2…X1X0,可由[X]补按下式求得[-X]补 [-X]补 = + 1 [X+Y]补 = [X]补 + [Y]补 [X-Y]补 = [X]补 + [-Y]补 假设[X]补=XSXn-1Xn-2…X1X0,可由[X]补按下式求得[-X]补 [-X]补 = + 1 把对[X]补连同符号位在内的各位求反运算称为对[X]补“求反”运算,记为~[X]补。这样对[X]补的“求补”运算可看成对[X]补“求反”运算再加1:[-X]补=~[X] 补 + 1,且两者有以下关系: [X]补 + ~[X]补 = 2n+1 - 1 = 11…1(n个1) 计算机组成原理 西北工业大学计算机学院
(1)在补码表示中,用符号位X0表示数值的正负:0正1负 (2)在补码表示中,数值0只有一种表示方法,即00…0 5. 补码的特点 (1)在补码表示中,用符号位X0表示数值的正负:0正1负 (2)在补码表示中,数值0只有一种表示方法,即00…0 (3)负数补码表示范围比正数要宽 (4)通过补码,减法可以转换为加法 计算机组成原理 西北工业大学计算机学院
若[X]补=XSXn-1Xn-2…X1X0为8位,需要扩展为16位时,要按下面的规则进行扩展: 6. 补码的符号位扩展 若[X]补=XSXn-1Xn-2…X1X0为8位,需要扩展为16位时,要按下面的规则进行扩展: 用符号位XS填满扩展的高8位,若X>0,XS=0,扩展后高8位全为0,低8 位包括符号位仍为原来的数码位。 若X<0,XS=1,扩展后高8位全为1,低8位包括符号位仍为原来的数码位。 计算机组成原理 西北工业大学计算机学院
2.2.4 机器数的反码表示法 1、定义: 小数反码的数学定义为: [X]反 = 【例】X=1011 则[X]反=01011 计算机组成原理 西北工业大学计算机学院
[-0]反= (2n+1-1) + (-00…0) = 2n+1 - 1 =11…1 (mod 2n+1-1 ) 2、性质: (1) 在反码表示法中,0的反码不是唯一的, 整数0 [+0]反= 00…0 [-0]反= (2n+1-1) + (-00…0) = 2n+1 - 1 =11…1 (mod 2n+1-1 ) 小数0 [+0]反= 0.00…0 [-0]反= 2 - 2-n - 0.00…0 = 1.1…1 (mod 2-2-n) (2) 假设一整数X的反码表示为:[X]反=XSXn-1Xn-2…X1X0,XS是反码的符号位,它标志整数X的符号,XS=0时,X为正数;XS=1时,X为负数。 (3) 反码与补码的关系 根据补码和反码的定义,当X为正数时,[X]补 = [X]反; 当X为负整数时, [X]补 = [X]反 + 1 ; 当X为n位负小数时, [X]补 = [X]反 + 2-n 计算机组成原理 西北工业大学计算机学院
2.2.5 机器数的移(增)码表示法 1、定义: 整数[X]移 = 2n + X 2n>X≥-2n 小数[X]移 = 1 + X 1>X≥-1 即无论X是正还是负,一律加上2n,称2n为基数。 2、移码与补码的关系是:真值是正数时,移码是补码的最高位加1;真值是负数时,移码是补码的最高位减1。也就是把补码的符号位变为其反码即可。即 若 [X]补=XSXn-1Xn-2…X1X0, 则 [X]移=XSXn-1Xn-2…X1X0 【例】X=1001 [X]补=01001 可求得[X]移=11001 X=-1001 [X]补=10111 可求得[X]移=00111 计算机组成原理 西北工业大学计算机学院
(2) 机器0的形式为00…0,它所表示的真值是[X]移所能表示的数中最小的数。 3、移码有如下性质: (1) 在移码表示法中,0的移码是唯一的, 整数0 [+0]移= 2n + 00…0 = 100…0 [-0]移= 2n - 00…0 = 100…0 (2) 机器0的形式为00…0,它所表示的真值是[X]移所能表示的数中最小的数。 即[X]移=00…0,其对应的真值是X=0-2n=-2n。而补码中的最小机器数是0,但0并不是最小真值-2n。 (3) 移码的最高位是符号位,但其表示的意义与原码和补码表示的意义相反。符号为0时,表示负数;符号为1,表示正数。 (4) 移码一般只进行加减运算,运算后需要对结果进行修正,修正量为2n,即要对结果的符号位取反后,才能得到移码形式的结果。 (5)通过比较两个移码的大小, 就可得知其对应的真值的大小。 计算机组成原理 西北工业大学计算机学院
2.2.6 各种编码的比较 上面所述的四种表示方式中,移码主要用于表示浮点数的阶码。下面对其它三种编码方法作以比较: (1) 三种编码的最高位都是符号位。 (2) 当真值为正时,三种编码的符号位都用0表示,数值部分与真值相同。 即它们的表示方法是相同的。 (3) 当真值为负时,三种编码的符号位都用1表示,但数值部分的表示各不相同,数值部分存在这样的关系:补码是原码的“求反加1”(整数),或者“求反末位加1”(小数);反码是原码的“每位求反”。 (4) 它们所能表示的数据范围,基本上是一样的,-2n<X<2n(整数)或-1<X<1( 小数),只是补码多表示一个数-2n(整数)或-1(小数)。 三种编码方法的区别主要在于,它们对负数的表示方法有所不同。 计算机组成原理 西北工业大学计算机学院
各种码制之间的关系及转换方法 X真值 [X]移码 符号为+:X0=0 符号为-:X0=1 符号位取反 数值位不变 数值位不变 符号位X0不变 数值位取反,末位加1 [X]反码 X0=0,数值位不变 X0=1,[X]补码=[X]反码+1 [-X]补码 计算机组成原理 西北工业大学计算机学院
2.3 数的定点表示与浮点表示
数据的表示常用的有两种:定点表示法和浮点表示法。 任何一个二进制数N都可以表示为 N=2E·S 其中E是一个二进制整数,称为数N的阶码,2为阶码的基数,S是二进制小数,称为数N的尾数。E和S可正可负。尾数S表示数N的全部有效数据,阶码E指明该数的小数点位置,表示数据的大小范围。 计算机组成原理 西北工业大学计算机学院
2.3.1定点数表示法 (1) 阶码E保持不变 (2) 若E=0,小数点固定在最高位之前,则该数是一个纯小数或定点小数。 例如 N=20·0.110101001=0.110101001 (3)若取E=n(n为尾数的位数),则把小数点定在尾数最末位之后,这时表示一个纯整数(定点整数)。 例如 N=27·0.1011010=01011010 计算机组成原理 西北工业大学计算机学院
定点小数 典型数据 原码 真值 补码 最小正数 0.00…001 + 2-n +2-n 最大正数 0.11..1111 +(1-2-n) 数符 尾数 X0 X1 X2 … Xn 小数点 定点小数原码和补码的典型数据 典型数据 原码 真值 补码 最小正数 0.00…001 + 2-n +2-n 最大正数 0.11..1111 +(1-2-n) 0.11…111 最小负数 1.11…111 -(1-2-n) 1.00…000 -1 最大负数 1.00…001 -2-n +0 0.00…000 -0 计算机组成原理 西北工业大学计算机学院
定点整数 典型数据 原码 真值 补码 最小正数 0 00…001 +1 最大正数 0 11..1111 +(2n -1) 0 11…111 数符 尾数 X0 X1 X2 … Xn 定点整数原码和补码的典型数据 小数点 典型数据 原码 真值 补码 最小正数 0 00…001 +1 最大正数 0 11..1111 +(2n -1) 0 11…111 最小负数 1 11…111 -(2n -1) 1 00…000 - 2n 最大负数 1 00…001 -1 +0 0 00…000 -0 计算机组成原理 西北工业大学计算机学院
定点数的分辨率 定点数在数轴上是不连续的 定点数的分辨率是指相邻两个定点数之间的最小间隔。 定点整数的分辨率恒为1 字长n+1的定点小数的分辨率为2-n 计算机组成原理 西北工业大学计算机学院
定点机 硬件上只考虑定点小数或整数运算的计算机 优点:运算简单,硬件结构简单,运算速度快 缺点: 表示数据范围小 使用不方便,运算精度低 存储单元利用率低 计算机组成原理 西北工业大学计算机学院
通常,阶码位数m与尾数位数n之间有如下关系: 2.3.2浮点数表示法 1. 浮点数的格式 通常,阶码位数m与尾数位数n之间有如下关系: 2m-1≥n 即表示阶码的值应保证实际的小数点可以在整个尾数的位格中移动。 阶码 阶符 尾数 尾符 (a) 阶码小数点 尾数小数点 阶符 尾符 尾数 阶码 (b) 阶码和尾数小数点 浮点数的表示形式 计算机组成原理 西北工业大学计算机学院
(1)提高运算精度,尽可能占满尾数的位数,以保留更多的有效数字 (2)保证浮点数的表示唯一性 2. 规格化浮点数 所谓浮点数的规格化,就是通过移动尾数,使尾数S的最高位数字为1。即S满足1/2≤|S|<1时,这个浮点数就是规格化的数,否则就不是。在字长一定的情况下,规格化的浮点数精度最高。 其目的在于: (1)提高运算精度,尽可能占满尾数的位数,以保留更多的有效数字 (2)保证浮点数的表示唯一性 计算机组成原理 西北工业大学计算机学院
原码表示的规格化浮点数 对于尾数为[S]原=Sf.S1S2…Sn,其规格化的真值满足: ½≤|S|∠1 即 S1=1 计算机组成原理 西北工业大学计算机学院
补码表示的规格化浮点数 对于尾数为[S]补=Sf.S1S2…Sn,其规格化的真值满足: ½≤|S|∠1或-1≤|S|∠- ½ 即 计算机组成原理 西北工业大学计算机学院
浮点数的表示范围 尾数的位数决定了数据表示的精度,增加尾数的位数可以增件有效数字的位数,提高数据表示的精度; 上溢区 下溢区 上溢区 负数区 正数区 最大负数 最小负数 最小正数 最大正数 尾数的位数决定了数据表示的精度,增加尾数的位数可以增件有效数字的位数,提高数据表示的精度; 阶码的位数决定了数据表示的范围,增加阶码的位数可以扩大数据表示的范围。 计算机组成原理 西北工业大学计算机学院
【例】VAX-11系列机的浮点数格式 (1)单精度浮点数-F浮点 (2)双精度浮点数-G浮点 数符 阶码 尾数 23位 1位 8位 数符 阶码 尾数 52位 1位 11位 计算机组成原理 西北工业大学计算机学院
【例】 IEEE754浮点数据标准 四种基本格式: 单精度格式(32位):E=8位,M=23位 扩展单精度格式:E≥11位,M=31位 符号位S 指数E 尾数M 四种基本格式: 单精度格式(32位):E=8位,M=23位 扩展单精度格式:E≥11位,M=31位 双精度格式(64位):E=11位,M=52位 扩展双精度格式:E ≥15位,M ≥63位 计算机组成原理 西北工业大学计算机学院
IEEE754标准32位单精度浮点数 实际数值N=(-1)S×1.M×2E-127 S:数符,0——“+”,1——“-” M:尾数23位,小数点左边隐含一位1,有效值为: 1.M 实际数值N=(-1)S×1.M×2E-127 计算机组成原理 西北工业大学计算机学院
IEEE754标准32位单精度浮点数(续) E=0, M=0,则N=0 E=0,M≠0,则N=(-1)S×2-126×(0.M),为非规格化数 1≤E≤254,则N=(-1)S×2E-127×(1.M),为规格化数 E=255,且M≠0 ,则N=NaN(非数值) E=255,且M=0,则N=∞(无穷大) 计算机组成原理 西北工业大学计算机学院
x=[1+(1-2-23)]×2127 (2)最小正数 x=1.0×2-126 【例】假设由S,E,M三个域组成的一个32位二进制字所表示的非零规格化浮点数x,真值表示为: x=(-1)s×(1.M)×2E-127 问:它所表示的规格化的最大正数、最小正数、最大负数、最小负数是多少? [解:] (1)最大正数 11111110 11111111111111111111111 x=[1+(1-2-23)]×2127 (2)最小正数 00000000000000000000000 00000001 x=1.0×2-126 计算机组成原理 西北工业大学计算机学院
(3)最小负数 x=-[1+(1-2-23)]×2127 x=-1.0×2-126 11111110 11111111111111111111111 x=-[1+(1-2-23)]×2127 (4)最大负数 00000001 00000000000000000000000 x=-1.0×2-126 计算机组成原理 西北工业大学计算机学院
2.3.3定点数表示法和浮点数表示法的比较 1.两种表示法所表示的数据范围不同 (1)定点表示法,8位小数,则能表示的数据范围(绝对值)为: 0.0000001~0.1111111 (2-7~1-2-7) (2)浮点表示法,2位阶码,1位阶符,4位尾数,1位尾符,则能表示的数据范围(绝对值)为: 0.0001×2-3 ~ 0.1111×23 计算机组成原理 西北工业大学计算机学院
2.溢出情况 (1) 定点表示法(小数) 带符号n+1位数时: 小于2-n时:当0; 大于1-2-n时:溢出,停机。 (2) 浮点表示法 (1) 定点表示法(小数) 带符号n+1位数时: 小于2-n时:当0; 大于1-2-n时:溢出,停机。 (2) 浮点表示法 规格化后,从阶码上分析溢出: 阶码很小时,下溢:当0; 阶码超出最大值时,上溢:停机。 计算机组成原理 西北工业大学计算机学院
3.运算规则的复杂性不同 定点数:较简单; 浮点数:较复杂。 4.规格化浮点数的精度远远大于定点数。 计算机组成原理 西北工业大学计算机学院
2.4 非数值型数据的表示
2.4.1 逻辑数——二进制串 逻辑数用于代表命题的真与假、是与非等逻辑关系,通常用一个二进制串来表示,其特点: 逻辑数中的0和1仅代表一个命题的真与假、是与非等逻辑关系; 逻辑数没有符号问题; 逻辑数只能按位参与逻辑运算,无位权和进位问题 计算机组成原理 西北工业大学计算机学院
逻辑运算 ⊕ 逻辑运算 运算符号 电路符号 与 ∧ · 或 ∨ + 非  ̄ 异或 同或 ⊙ & ≥1 =1 =1 计算机组成原理 ∧ · 或 ∨ + 非  ̄ 异或 ⊕ 同或 ⊙ & ≥1 =1 =1 计算机组成原理 西北工业大学计算机学院
2.4.2 字符与字符串 ASCII码 “美国标准信息交换代码”(American Standard Code for Information Interchange),简称ASCII码。7位二进制编码,可表示27=128个字符。 ASCII码中,编码值0~31不对应任何可印刷(或称有字形)字符,通常称它们为控制字符,用于通信中的通信控制或对计算机设备的功能控制。编码值为32的是空格(或间隔)字符SP。编码值为127的是删除控制DEL码。其余的94个字符称为可印刷字符。 计算机组成原理 西北工业大学计算机学院
b3b2b1b0位 b6b5b4位 000 001 010 011 100 101 110 111 0000 NUL DEL SP @ P p 0001 SOH DC1 ! 1 A Q a q 0010 STX DC2 “ 2 B R b r 0011 ETX DC3 # 3 C S c s 0100 EOT DC4 $ 4 D T d t 0101 ENQ NAK % 5 E U e u 0110 ACK SYN & 6 F V f v 0111 ETB 7 G W g w 1000 BS CAN ( 8 H X h x 1001 HT EM ) 9 I Y i y 1010 LF SUB * : J Z j z 1011 VT ESC + ; K [ k { 1100 FF FS , < L \ | 1101 CR GS - = M ] m } 1110 SO RS . > N n ~ 1111 SI US / ? O _ o 计算机组成原理 西北工业大学计算机学院
EBCDIC码 EBCDIC码(Extended Binary Coded Decimal Interchange Code,扩展BCD码),它是8位二进制编码,可以表示256个编码状态,但只选用其中一部分。 主要用在IBM公司生产的各种机器中。 计算机组成原理 西北工业大学计算机学院
字符串 字符串:是指连续的一串字符,通常方式下,它们依次占用主存中 连续的多个字节,每个字节存一个字符。 [例] 将字符串: IF└┘A>B└┘THEN└┘READ(C) 从高位字节到低位字节依次存在主存中。 [解:] 设:主存单元长度由4个字节组成。每个字节中存放相应字符的ASCII值,文字表达式中的空格“└┘”在主存中也占一个字节的位置。 因而每个字节分别存放十进制的73、70、32、65、62、66、32、84、72、69、78、32、82、69、65、68、40、67、41、32。 计算机组成原理 西北工业大学计算机学院
主存各字节单元内容 I F └┘ A > B T H E N R D ( C ) 计算机组成原理 西北工业大学计算机学院
2.6.3 汉字的表示 1、特点: (1)汉字是一种象形文字,据统计,从甲骨文至今约有六万左右的汉字。目前常见的汉字有约七千个。 (2)汉字字形结构复杂,笔划繁多。 (3)汉字同音字多,多音字多。 2、涉及多种编码:首先将汉字转换成计算机能接收的编码,称为汉字输入码,输入码进入计算机后必须转换成汉字内码才能进行处理。为了显示输出汉字或打印输出汉字,需要经过一个变换,将汉字内码转换成汉字字形码。此外,为了使不同的汉字处理系统之间能够交换信息,还应存在汉字交换码。 计算机组成原理 西北工业大学计算机学院
拼音码:拼音码是以汉字拼音为基础的输入方法。使用简单方便,但汉字同音字太多,输入重码率很高,同音字选择影响了输入速度。 汉字的输入编码 包括:数字码、拼音码和字形码 数字码:常用的是国标区位码,用数字串代表一个汉字输入。区位码是将国家标准局公布的6763个两级汉字分为94个区,每个区分94位,实际上把汉字表示成二维数组,每个汉字在数组中的下标就是区位码。区码和位码各两位十进制数字,因此输入一个汉字需按键四次。 数字编码输入的优点是无重码,且输入码与内部编码的转换比较方便,。缺点是代码难以记忆。 拼音码:拼音码是以汉字拼音为基础的输入方法。使用简单方便,但汉字同音字太多,输入重码率很高,同音字选择影响了输入速度。 为了加快输入速度,在上述方法基础上,发展了词组输入\联想输入等多种快速输入方法。但是都利用了键盘进行“手动”输入。理想的输入方式是利用语音或图象识别技术“自动”将拼音或文本输入到计算机内,使计算机能认识汉字,听懂汉语,并将其自动转换为机内代码表示。目前这种理想已经成为现实。 字形码:字形编码是用汉字的形状来进行的编码(例:五笔字型)。把汉字的笔划部件用字母或数字进行编码,按笔划的顺序依次输入,就能表示一个汉字。 计算机组成原理 西北工业大学计算机学院
汉字内码 注意:有些系统中字节的最高位用于奇偶校验位,这种情况下用三个字节表示汉字内码。 汉字内码是用于汉字信息的存储、交换、检索等操作的机内代码,一般采用两个字节表示。英文字符的机内代码是七位的ASCII码,当用一个字节表示时,最高位为“0”。为了与英文字符能相互区别,汉字机内代码中两个字节的最高位均规定为“1”。 注意:有些系统中字节的最高位用于奇偶校验位,这种情况下用三个字节表示汉字内码。 计算机组成原理 西北工业大学计算机学院
汉字字模码 字模码是用点阵表示的汉字字形代码,它是汉字的输出形式 例如: 字模码 此例,汉字的字模码为: 16位× 16位=32字节 计算机组成原理 西北工业大学计算机学院
注意到: 字模点阵只能用来构成汉字库,而不能用于机内存储。字库中存储了每个汉字的点阵代码,用于汉字的显示输出或打印输出。当显示输出或打印输出时才检索字库,输出字模点阵,得到字形。 汉字的输入编码、汉字内码、字模码是计算机中用于输入、内部处理、输出三种不同用途的编码,不要混为一谈。 计算机组成原理 西北工业大学计算机学院
汉字交换码 用于不同汉字系统之间交换汉字信息的汉字编码。 1981年我国制定了《信息交换用汉字编码字符集基本集GB2312-80》国家标准(国标码)。每个二进制编码用两个字节表示。共收录一级汉字3755个,二级汉字3008个,各种符号682个,共计7445个。 1993年制定GB13000.1-1993,收录20902个中、日、韩字符。 1995年制定《汉字扩展规范GBK1.0 》,收录21886简、繁体汉字。 2000年制定《 GB18030-2000信息技术信息交换用汉字编码字符集基本集的扩充》 Unicode ISO10646 收录65536个字符,其中含20992个汉字 计算机组成原理 西北工业大学计算机学院
用四位二进制代码的不同组合来表示一个十进制数码的编码方法,称为二—十进制编码,也称BCD码(Binary Coded Decimal)。 2.5 十进制数串的表示 用四位二进制代码的不同组合来表示一个十进制数码的编码方法,称为二—十进制编码,也称BCD码(Binary Coded Decimal)。
2.5.1 二—十进制编码原理 1、二—十进制的编码都采用压缩的十进制串的方法,即四个二进制位的值来表示一个十进制数码。 2、各种编码的区别在于选用哪十个状态。选择的原则是:要考虑输入和输出时转换方便;内部运算时,加、减运算规则要尽量简单;在特定场合,可能有其它一些要求。 3、从每个二进制位是否有确定的位权区分,可把二—十进制编码分为有权码和无权码。 计算机组成原理 西北工业大学计算机学院
2.5.2 二—十进制有权码 1、对于有权码,将每位的数码与相应的位权相乘,再求和,就可以得到它所代表的十进制数值。 2、8421码实现加、减运算时的修正规则: (1)4位一组二进制数,两个8421码表示的数相加之和等于或小于1001,即十进制的9时,不需要修正,在各组内,二进制代码相加,仍遵循“逢二进一”的规则。 (2)4位一组二进制数,两个8421码相加结果大于1001(即十进制9)时,则应该对该组的4位进行“加6修正”,使它向高一组产生进位。 (3)4位一组二进制数,两个8421码相加结果大于或等于10000(即十进制16),而向高一组进位时,则应该对该4位进行“加6修正”。 计算机组成原理 西北工业大学计算机学院
3、其它编码方法还有:2421码、5211码、4311码和84-2-1码( 四位二进制位的位权分别为8、4、-2、-1)等。其最方便使用的共同特点为: (1) 对于2421码、5211码、4311码,任何两个十进制数位,采用这三种编码的任何一种编码,它们相加之和等于或大于10时,其结果的最高位向左产生进位,小于10时则不产生进位。这一特点有利于实现“逢十进位”的计数和加法规则。 (2) 对于2421码、5211码、4311码和84-2-1码,任何两个十进制数位,采用这四种编码的任何一种编码,它们相加其和等于9时,即它们的二进制编码位互为反码,则其结果的四个二进制位一定是1111,能较好地体现十进制的按9 取补与二进制的按1取补的对应关系,这对减法很有用。 计算机组成原理 西北工业大学计算机学院
2.5.3 二—十进制无权码 无权码中,用的较多的是余3码(Excess-3 code)和格雷码(Gray code),格雷码又称循环码。 1. 余3码 (1) 余3码是在8421码的基础上,把每个代码都加上0011而形成的。 (2) 普通8421码的加法器仍能为余3码加法器直接利用,具体规则如下: (A)若两个十进制数的余3码相加,如果结果不产生进位,则从所得和值去减0011,便得十进制位和的余3码。 (B)若两个十进制数的余3码相加,如果结果有进位,则其进位正确, 但需将所得和值加上0011,才求得十进制数和的余3码。 计算机组成原理 西北工业大学计算机学院
(1) 格雷码的编码规则是使相邻的两个代码,只有一个二进制位的状态不同,其余三个二进制位必须有相同状态。 2. 格雷码 (1) 格雷码的编码规则是使相邻的两个代码,只有一个二进制位的状态不同,其余三个二进制位必须有相同状态。 (2) 优点:从一个编码变到下一个相邻编码时,只有一个位的状态发生变化,有利于保证代码变换的连续性。在模拟/数字转换和产生节拍电位等应用场合特别有用。 有关二—十进制的部分编码方案列于表2.1中。 计算机组成原理 西北工业大学计算机学院
表 二—十进制的编码的部分编码方案 1001 1111 1100 0100 1000 1110 1011 0111 1101 1010 0001 0011 0110 0101 0010 0000 9 8 7 6 5 1 2 3 4 格雷码(2) 格雷码(1) 余3码 4311 84-2-1 5211 2421 无权码 位有权码 十进制 符号 (BCD) 8421 计算机组成原理 西北工业大学计算机学院
2.5.4 十进制数串的表示 1.字符串形式 将十进制数串以字符串的形式进行表示,即把十进制数串中每一位数字以及符号都看做一个字符,用一个字节表示它的字符编码(ASCII码)。 根据数串中符号的位置,可以分为前分隔数字串和后嵌入数字串两种表示形式: (1)前分隔数字串 符号位占用单独一个字节,位于数字位之前,正号用“+”表示(编码为2BH),负号用“-”表示(编码为2DH) 2B 31 33 35 2D 32 36 37 38 -2678 +135 计算机组成原理 西北工业大学计算机学院
符号位不单独占用一个字节,而是嵌入到最低一位数字的编码中,若为正,则最低一位的数字编码不变,否则,用40H与最低一位的数字编码加。 (2)后嵌入数字串 符号位不单独占用一个字节,而是嵌入到最低一位数字的编码中,若为正,则最低一位的数字编码不变,否则,用40H与最低一位的数字编码加。 31 33 35 32 36 37 78 -2678 +135 计算机组成原理 西北工业大学计算机学院
2.压缩的十进制数串 用一个字节存放两位十进制数,每一位十进制数均BCD码表示,符号另占用半个字节,并存放在最低数值位之后,通常用1100表示正号,用1101 表示负号 0001 0011 01 01 1100 0000 0010 0110 0111 1000 1101 -2678 +135 计算机组成原理 西北工业大学计算机学院
2.6 数据检验码
2.6.1 码距与数据校验码 1、数据校验的实现原理:数据校验码是在合法的数据编码之间,加进一些不允许出现的(非法的)编码,使合法的数据编码出现错误时成为非法编码。这样就可以通过检测编码的合法性达到发现错误的目的。 2、海明距离:一组编码中任何两个编码之间代码不同的位数。 3、码距:码距指任何一种编码的任两组二进制代码中,其对应位置的代码最少有几个二进制位不相同,即一套编码系统中最小的海明距离。 4、校验码:具有检测某些错误或带有自动纠正错误能力的数据编码。 计算机组成原理 西北工业大学计算机学院
设码距为d,则码距与校验码的检错和纠错能力的关系是: d≥e+1,最多可检验e个错; d≥2t+1,最多可纠正t个错; d≥e+t+1,且e>t,最多可检验e个错并能纠正t个错 计算机组成原理 西北工业大学计算机学院
2.6.2 奇偶校验码 1、码距=2 2、奇偶校验码:它是在被传送的n位信息组上, 加上一个二进制位作为校验位,使配置后的n+1位二进制代码中1的个数为奇数( 奇校验)或偶数(偶校验)。 例: 数据 奇校验编码 偶校验编码 00000000 100000000 000000000 01110101 001110101 101110101 其中,最高一位为校验位,其余低八位为数据位。 计算机组成原理 西北工业大学计算机学院
3、奇偶校验码只能检测出数据代码中一位出错的情况,但无法判断差错所发生的位置。常用于存储器读写检查,或ASCII字符传送过程中的检查。 进行奇偶校验时,E=0表示正确,E=1表示出错 计算机组成原理 西北工业大学计算机学院
2.6.3 海明校验码 1.原理 海明校验码的实现原理是:在数据位中加入几个校验位,将数据代码的码距均匀地拉大,并把数据的每个二进制位分配在几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化,这不但可以发现错误,还能指出是哪一位出错,为进一步自动纠错提供了依据。 2.编码规则 若海明码的最高位号为m,最低位号为1,即HmHm-1…H2H1,则海明码的编码规则是: (1)校验位与数据位之和为m,每个校验位Pi在海明码中被分在位号2i-1的位置上,其余各位为数据位,并按从低向高逐位依次排列的关系分配各数据位。 (2)海明码的每一位位码Hi(包括数据位和校验位)由多个校验位校验,其关系是被校验的每一位位号要等于校验它的各校验位的位号之和。 计算机组成原理 西北工业大学计算机学院
这个关系式称为海明不等式,若信息位长度n确定后,由此可得到校验位k的最短长度。 3.增添校验位 假设欲检测的有效信息为n位,需增加的校验位为k位,则校验码的长度为n+k位。校验位的状态组合,应当具有指出n+k位中任一位有错或无错的能力,即需要区别出n+k+1种状态。应满足以下关系式: 2k≥n+k+1 这个关系式称为海明不等式,若信息位长度n确定后,由此可得到校验位k的最短长度。 确定校验位后,就可以与信息位组成海明校验位。假设数据位是7位二进制编码,据上所述,校验位的位数k为4,故海明码的总位数为11。它们的排列关系可表示为: 海明码位号:H11 H10 H9 H8 H7 H6 H5 H4 H3 H2 H1 海明码: D7 D6 D5 P4 D4 D3 D2 P3 D1 P2 P1 可知: 每个校验位由其本身校验; 每个数据位由若干校验位校验。 计算机组成原理 西北工业大学计算机学院
根据海明码的编码规则,每一位海明码都有多个校验位校验,且被校验的每位的位号等于参与校验它的几个校验位的位号之和。 4.校验位校验任务的分配 根据海明码的编码规则,每一位海明码都有多个校验位校验,且被校验的每位的位号等于参与校验它的几个校验位的位号之和。 占据各权位上的校验位按权组成的8421码,正好等于海明码的位号,即海明码的位号Hi正好等于要校验它的校验位所占权位权值之和。 例如:H11=P4×23+P2×21+P1×20 这说明了H11位将由 P4、P2、P1进行校验。 校验位P1可以校验:H1 、H3、H5 、H7 、H9、H11、H13、H15 校验位P2可以校验:H2 、H3、 H6、H7 、H10、H11、H14 、H15 校验位P3可以校验:H4 、H5、 H6、 H7 、H12、H13、H14 、H15 校验位P4可以校验:H8、H9、 H10、H11、H12、H13、H14 、H15 根据校验时采用奇校验或是偶校验,可以写出相应的校验方程。 计算机组成原理 西北工业大学计算机学院
【例】设有一个7位信息码位0110001,求它的海明码。 解: 此例中,信息位n=7,根据海明不等式,可求得校验位最短长度k=4。 其海明码先表示如下: 海明码位号:H11 H10 H9 H8 H7 H6 H5 H4 H3 H2 H1 海明码: 0 1 1 P4 0 0 0 P3 1 P2 P1 按偶校验写出校验方程为: H1 H3H5 H7 H9H11=0 (P1=H1) H2 H3 H6H7 H10H11=0 (P2=H2) H4H5 H6H7=0 (P3=H4) H8H9 H10H11=0 (P4=H8) 由此可得:P1=0、P2=0、P3=0、P4=0,所以0110001的海明码为01100000100。 计算机组成原理 西北工业大学计算机学院
H1 H3H5 H7 H9H11=0 1 0 0 1 0 = 0 = E1 5.检错与纠错 方法:将错了的码字重新代入校验方程校验一次即可。假设上面例子中的海明码01100000100传送后,若H6位发生了错误,变成了01100100100,这时把它们代入上面的偶校验校验方程,如下: H1 H3H5 H7 H9H11=0 1 0 0 1 0 = 0 = E1 H2 H3 H6H7 H10H11=0 1 1 0 1 0 = 1 = E2 H4H5 H6 H7=0 0 1 0 = 1 = E3 H8H9 H10H11=0 1 1 0 = 0 = E4 可以把E4E3E2E1= 0110看成一个“指误字”,因为其二进制码为0110,说明H6出了错,是H6错成了1,所以要纠错,纠错时将H6位取反值,即让它恢复到正确值0。这样纠错后,即可得到正确的海明码01100000100。 注:该方法能正确指出存在的一位错误并纠正, 但多多位出错的情况无能为力 计算机组成原理 西北工业大学计算机学院
2.6.4 循环冗余校验码(Cyclic Redundancy Check) 1.CRC的编码方法 n是有效数据信息位位数,r是校验位位数。总长k=n+r位,称(k,n)码。 设待编码的有效信息以多项式M(x)表示,将M(x)左移r位得到多项式M(x)*Xr,使低r位二进制位全为零,以便与r位校验位拼接。使用多项式M(x)*Xr除以生成多项式G(x),求得的余数即为校验位。为了得到r位余数(校验位),G(X)必须是r+1位的。 计算机组成原理 西北工业大学计算机学院
假设M(x)*Xr除以生成多项式G(x) ,求得的余数用表达式R(x)表示,商的表达式用Q(x)表示,它们之间的关系如下: 这时将r位余数R(X)与左移r位的M(x)*Xr相加,就得到n+r位的CRC编码: M(x)*Xr+R(x) = Q(x)*G(x) + R(x) + R(x) 因为“两个相同数据的模2和为零”,即R(x) + R(x) = 0,所以, M(x)*Xr+R(x) = Q(x)*G(x) 可以看出,所求得的CRC码是一个可被G(X)表示的数码除尽的数码。 计算机组成原理 西北工业大学计算机学院
【例】设四位有效信息位是1100,选用生成多项式 G(X)=1011,试求有效信息位1100的CRC编码。 解: (1) 将有效信息位1100表示为多项式M(x) M(X) = X3 + X2 = 1100 (2) M(X)左移r=3位,得M(x)*X3 M(x)*X3 = X6 + X5 = 1100000 (3) 用r+1位的生成多项式 G(X),对M(x)*Xr作“模2除” 1100000/1011 = 1110 + 010/1011 则R(X)=010 (4) M(x)*X3 与r位余数R(X) 作“模2加”,即可求得它的CRC编码 M(x)*X3 + R(X) = 1100000 + 010 = 1100010 (模2加) 因为k=7、n=4,所以编好的CRC码又称为(7,4)码。 计算机组成原理 西北工业大学计算机学院
2.模2运算:不考虑借位和进位 (1) 模2加减:可用异或门实现,即: 0+0=0;0+1=1;1+0=1;1+1=0; (1) 模2加减:可用异或门实现,即: 0+0=0;0+1=1;1+0=1;1+1=0; 0-0=0;0-1=1;1-0=1;1-1=0; (2) 模2乘法:用模2加求部分积之和 例如: 1011 x 11 + 1011 11101 计算机组成原理 西北工业大学计算机学院
(3) 模2除法:按模2减求部分余数,每上一位商,部分余数要减少一位,上商规则是:只要余数最高位为1,则商1,否则为0。当部分余数的位数小于除数时,该余数为最后余数。 例如: 111……………….商 11(除数) 1000(被除数) 11 10 1 计算机组成原理 西北工业大学计算机学院
不同的出错位,其余数也是不同的。下表给出了(7,4)CRC码的出错模式。 CRC码传送到目标部件,用约定的多项式G(x)对收到的CRC码进行“模2除”,若余数为0,则表明该CRC校验码正确;否则表明有错,不同的出错位,其余数是不同的。由余数具体指出是哪一位出了错,然后加以纠正。 不同的出错位,其余数也是不同的。下表给出了(7,4)CRC码的出错模式。 可以证明:更换不同的有效信息位,余数与出错位的对应关系不会发生变化,只与码制和生成多项式G(X)有关。 计算机组成原理 西北工业大学计算机学院
(7,4)码的出错模式 【例】设生成多项式G(x)=1011,若接收端收到码字为 A7 A6 A5 A4 A3 A2 A1 =1010111,用G(x)做模2除,得到余数为100,说明A3位错误,可纠正之 计算机组成原理 西北工业大学计算机学院
不是任何一个(k+1)位多项式都能作为生成多项式,从检错、纠错的要求来看,生成多项式应满足下列要求: 3.关于生成多项式 不是任何一个(k+1)位多项式都能作为生成多项式,从检错、纠错的要求来看,生成多项式应满足下列要求: (1) 任何一位发生错误,都应使余数不为零; (2) 不同位发生错误,都应使余数不同; (3) 用余数补零,继续作“模2除”,应使余数循环。 计算机组成原理 西北工业大学计算机学院