计算机组成原理 1
计 算 机 组 成 原 理
第四、五讲
2009年 11月 10日
信息表示与编码
计算机组成原理 2
1,进位计数制以及相转换
十进制, 二进制, 八进制, 十六进制
2,数值数据和非数值数据的表示方法
数值数据
定点数 ----原 反 补 移
浮点数 ----IEEE754
BCD码
非数值数据 ASCII,汉字
本讲安排
计算机组成原理 3
本讲将解决的主要问题
计算机中
数值数据
非数值数据
是如何表示?
计算机组成原理 4
1、进位计数制
进位计数制,用少量的数字符号,按先后次序把它们排成数位,
由低到高进行计数,计满进位,这样的方法称为进位计数制
基数,进位制基本特征数,即所用到的数字符号个数
例如 10进制, 0~9 十个数码表示,基数为 10
权,进位制中各位, 1” 所表示的值为该位的权
常见的进位制,2,8,10,16进制
计算机组成原理 5
十进制数的多项式表示,
N10=dn-1 × 10n-1 + dn-2 × 10n-2 +? ?? ?? ?d1 × 101 + d0
× 100 + d-1 × 10-1 + d-2 × 10-2 + ?? ?? ??d-m × 10-M
m,n为正整数,其中 n为整数位数; m为小数位数。 Di表
示第 i位的系数,10i称为该位的权,
1、十进制 (Decimal)
基数,10; 符号,0,1,2,3,4,5,6,7,8,9
计算规律,,逢十进一, 或, 借一当十,
例如,一个十进制数 123.45的表示
123.45 =1× 102+ 2× 101+ 3× 100 + 4× 10-1+ 5× 10-2
注:等式左边为并列表示法等式右边为多项式表示法
计算机组成原理 6
2、二进制 (Binary)
二进制的多项式表示,
N2=dn-1 × 2n-1 + dn-2 × 2n-2 +? ?? ?? ?d1 × 21 + d0 × 20
+ d-1 × 2-1 + d-2 × 2-2 + ? ?? ?? ?d-m × 2-m
其中 n为整数位数; m为小数位数。 Di表示第 i位的系数,2i
称为该位的权,
基数,2
符号,0,1
计算规律,逢二进一或借一当二
计算机组成原理 7
3、十六进制 (Hexadecimal)
二进制的多项式表示,
N16=dn-1 × 16n-1 + dn-2 × 16n-2 +? ?? ?? ?d1 × 161 + d0
× 160 + d-1 × 16-1 + d-2 × 16-2 + ?? ?? ??d-m × 16-m
其中 n为整数位数; m为小数位数。 Di表示第 i位的系数,16i称
为该位的权,
基数,16
符号,0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
计算规律,逢十六进一或借一当十六
例如十六进制数 (2C7.1F)16的表示
(2C7.1F)16=2 × 162+ 12 × 161+ 7 × 160+ 1 × 16-1+ 15 × 16-2
计算机组成原理 8
4,进位计数制之间的转换
1) R进制转换成十进制的方法
按权展开法,先写成多项式,然后计算十进制结果,
N= dn-1dn-2? ?? ?? ?d1d0d-1d-2 ? ?? ?? ?d-m
=dn-1 × Rn-1 + dn-2 × Rn-2 +? ?? ?? ?d1 × R1 + d0 × R0 +
d-1 × R-1 + d-2 × R-2 + ?? ?? ??d-m × R-m
例,写出 (1101.01)2,(237)8,(10D)16的十进制数
(10D)16=1× 162+13× 160=256+13=269
(1101.01)2=1× 23+1× 22+0× 21+1× 20+0× 2-1+1× 2-2
=8+4+1+0.25=13.25
(237)8=2× 82+3× 81+7× 80 =128+24+7=159
计算机组成原理 9
2)十进制转换成二进制方法
一般分为两个方法,
方法 1、整数部分的转换
除 2取余法(基数除法)
小数部分的转换
乘 2取整法(基数乘法)
方法 2,减权定位法
计算机组成原理 10
除基取余法,把给定的除以基数,取余数作为最低位的系数,然
后继续将商部分除以 基数,余数作为次低位系数,重复操
作直至商为 0
例如:用基数除法将 (327)10转换成二进制数
2 327 余数
2 163 1
2 81 1
2 40 1
2 20 0
2 10 0
2 5 0
2 2 1
2 1 0
2 0 1
(327)10 =(101000111) 2
计算机组成原理 11
把给定的十进制小数乘以 2,取其整数作为二进制小数的第
一位,然后取小数部分继续乘以 2,将所的整数部分作为第二位
小数,重复操作直至得到所需要的二进制小数
例如,将 (0.8125) 10 转换成二进制小数
整数部分 0.
2 × 0.8125=1.625 1
2 × 0.625 =1.25 1
2 × 0.25 =0.5 0
2 × 0.5 =1 1
(0.8125) 10 =(0.1101) 2
乘基取整法 (小数部分的转换 )
计算机组成原理 12
例,将 (0.2)10 转换成二进制小数
整数部分 0
0.2 × 2 = 0.4 0
0.4 × 2 = 0.8 0
0.8 × 2 = 1.6 1
0.6 × 2 = 1.2 1
0.2 × 2 = 0.4 0
0.4 × 2 = 0.8 0
0.8 × 2 = 1.6 1
0.6 × 2 = 1.2 1
(0.2)10 = [ 0.001100110011…,] 2
计算机组成原理 13
减权定位法
将十进制数依次从二进制的最高位权值进行比较,若够减则对应
位置 1,减去该权值后再往下比较,若不够减则对应位为 0,重复操作直
至差数为 0。
512 256 128 64 32 16 8 4 2 1
例如,将 (327)10 转换成二进制数 256<327<512
327 - 256=71 1 256
71 < 128 0 128
71 - 64 =7 1 64
7 < 32 0 32
7 < 16 0 16
7 < 8 0 8
7 - 4 =3 1 4
3 – 2 =1 1 2
1 – 1 =0 1 1
计算机组成原理 14
二进制 (B)转换成八进制 (Q)
例,(10110111,01101) 2
(10110111.01101) 2 =(267.32)8
八进制, 2 6 7, 3 2
二进制, 010,110,111, 011,010
二进制, 10,110,111, 011,01
3)其它进制之间的直接转换法
八进制 (Q)转换二进制 (B)
例如, (123.46 ) 8
=(001,010,011,100,110 ) 2
=(1010011.10011)2
计算机组成原理 15
二进制 (B)转换成十六进制 (H)
例, (110110111,01101) 2
(10110111.01101) 2 =(1B7.68)16
十六进制, 1 B 7, 6 8
二进制, 0001,1011,0111, 0110,1000
二进制, 1,1011,0111, 0110,1
10110111.01101B =1B7.68H
十六进制 (H)转换成二进制 (B)
例, (7AC.DE ) 16
=(0111,1010,1100.1101,1110 ) 2
=(11110101100,1101111 )2
计算机组成原理 16
常用信息分类及表示
信
息
数值数据
非数值数据 --
无符号数 --
有符号数 浮点数
定点数
十进制数
定点整数
定点小数
原码
补码
反码
移码
正整数
字符、汉字等
计算机组成原理 17
真值,正、负号加某进制数绝对值的形式称为真值。
如 +3,-5等,即实际值。
机器数,符号以及数值都数码化的数称为机器数
如, X=01011 Y=11011
即真值在机器中的表示,称为机器数
名词解释:真值和机器数
计算机组成原理 18
计算机中常用的数据表示格式有两种,
? 定点格式 ——容许的数值范围有限,但要求的处理硬件比
较简单。
? 浮点格式 ——容许的数值范围很大,但要求的处理硬件比
较复杂。
1.定点数的表示方法
定点表示,约定机器中所有数据的小数点位置是固定不变的。
(由于约定在固定的位置,小数点就不再使用记号,,”
来表示。 )
通常将数据表示成 纯小数 或 纯整数。
数据表示
计算机组成原理 19
定点数, 小数点位置固定不变的数
定点整数, 小数点固定在 最低位 数的 右面
(b) 定点小数
x
7
x
6
x
5
x
4
x
3
x
2
x
1
x
0
(a) 定点整数
x
6
x
7
x
5
x
4
x
3
x
2
x
1
x
0
数值范围:
纯小数 0≤ |x|≤ 1 – 2-n
纯整数 0≤ |x|≤ 2n – 1
目前计算机中多采用定点纯整数表示,因此将定点数表示
的运算简称为 整数运算 。
定点小数, 小数点固定在 最高位 数的 后面,即纯小数表示
计算机组成原理 20
无符号数的编码
正整数
数值表示:
x = x0x1x2… xn xi={0,1},0≤i≤n
x02n + x12n-1 + … + xn-121 + xn
数值范围
0≤x≤2n+1-1
例如,
x=010101
其数值 =24+22+20=21
在数据处理的过程中,如不需要设置符号位
可用全部字长来表示数值大小。如 8位无符号数的
取值范围是 0~255( 28 -1)。
计算机组成原理 21
计算机中 定点数 表示方法 ——
原码、补码、反码、移码 。
计算机组成原理 22
若 定点小数 的原码形式为 x0,x1 x2 ··· xn,( 共 n+1位)则原
码表示的定义是:
式中 [x]原 是机器数,x是真值。
1、原码表示法
(1)定点小数
x
1 – x = 1+ |x| -1 < x ? 0
0 ? x < 1[x]
原 =
数的机器码表示
若 定点整数 的原码形式为 x0 x1 x2 ··· xn,则原码表示的定
义是:
(2)定点整数
x
2n – x = 2n + |x| -2n < x ? 0
0 ? x < 2n[x]
原 =
计算机组成原理 23
例 1,x = +0.1001,则 [x]原 = 0.1001
x = -0.1001,则 [x]原 = 1+ |x| = 1.1001
例 2,x = 0.10110 ; -0.10110; 0.0000
对于 0,原码机器中往往有,+0”、,-0”之分,故有两种形
式:
[+0]原 =0.000...0
[ -0]原 =1.000...0
[x]原 = 0.10110; 1.10110; 0.0000 1.0000
例 3,x = +1011 总共用 5位表示,n=4
[x]原 =01011
x = -1011
[x]原 = 2n + |x|=10000 + |-1011|=11011
计算机组成原理 24
原码小数的表示范围,
最大值, 1- 2-n
最小值,-(1- 2-n)
若原码小数的位数是 8位时,其该数表示的最大值、最小值:
8位, 127/128,-127/128
原码整数的表示范围,
最大值, 2n-1
最小值,-(2n-1)
若 原码整数 的位数是 8位,其表示的最大值、最小值
8位, 127,-127,
计算机组成原理 25
原码 为符号位加上数的绝对值,0正 1负 ;
原码 零有两个编码,+0和 -0编码不同 ;
原码 加减运算复杂,乘除运算规则简单;
原码 表示简单,易于同真值之间进行转换。
(3)结论
计算机组成原理 26
2、补码表示法
(1)模的概念
假设 两位 十进制数计算,
? 77 — 38 =?
? 77 + 62 = 139
77 — 38 = 77 + 62 = 39 ( mod 100)
由此可以看出,减 38和 加 62是 等价的,前提是说对 模为 100是
正确的。这个 100在数学上称为 模数
计算机组成原理 27
计算机中运算器, 寄存器, 计数器都有一定的位数, 不可能
容纳无限大的任意数 。 当运算结果超出实际的最大表示范围,
就会发生溢出, 此时所产生的溢出量就是模 ( module) 。
因此, 可以把模定义为 一个计量器的容量 。 如:一个 4位的计
数器, 它的计数值为 0--15。 当计数器计满 15之后再加 1,这个
计数器就发生溢出, 其溢出量为 16,也就是模等于 16。
? 定点小数的溢出量为 2,即以 2为模;
? 一个字长为 n+1位的定点整数的溢出量为 2n+1,即
以 2n+1为模 。
模的概念
计算机组成原理 28
定义,
任意一个数 X的补码记为 [x]补,
[x]补 = X + M ( Mod M)
当 X>0时 X + M >M 自动丢失,
[x]补 = X ( Mod M)
当 X<0时 X + M = M - | X | < M,
[x]补 = X + M ( Mod M)
计算机组成原理 29
若 定点小数 的补码形式为 x0,x1 x2 ··· xn,则补码表示的定
义是:
(2)定点小数
x 0 ? x < 1
2 + x = 2 – |x| -1 ? x ? 0[x]补 = ( mod 2)
例, x = +0.1011,则 [x]补 = 0.1011
x = -0.1011,则 [x]补 = 10+x = 10.0000-0.1011= 1.0101
对于 0,[+0]补 = [-0]补 = 0.0000 (mod 2)
注意,0的补码表示只有一种形式。
计算机组成原理 30
若 定点整数 的补码形式为 x0 x1 x2 ··· xn,则补码表示的定
义是:
(3)定点整数
x
2n+1 + x = 2n+1 – |x| -2n ? x ? 0
0 ? x < 2n[x]
补 = ( mod 2n+1)
例, x = +0111,则 [x]补 =00111
x = -0111,则 [x]补 =24+1 – |-0111|=100000 – 0111=11001
计算机组成原理 31
n+1位 补码 整数, 2n -1 ___ -2n
n+1位 补码 小数, 1- 2-n ___ - 1
若 补码小数 的位数是 8位 时,其该数表示的最大值、最小值
:
- 1 __ 1- 2-7 即 -1 — 127/128
若 补码整数 的位数是 8位,其表示的最大值、最小值, -128 -
- 127
补码的表数范围
计算机组成原理 32
补码 最高一位为符号位,0正 1负 ;
补码 零有唯一编码;
补码 能很好用于加减运算。
(4)特点
补码 满足 [-x]补 + [x]补 =0 [+7]补 =00111
最高位参与演算,与其它位一样对待。
[-7]补 =11001
扩展方便。 5位的 补码 扩展为 8位 00111 00000111
11001 11111001
算术移位。假设 [x]补 =x0,x1 x2 ··· xn,
[x/2]补 =x0,x0 x1 x2 ··· xn-1
计算机组成原理 33
最大的优点就是将减法运算转换成加法运算。
[X+Y]补 = [X]补 +[Y]补
[X - Y]补 = [X]补 + [-Y]补
例如, X=(11)10=(1011)2 Y=(5)10=(0101)2
已知字长 n=5位
[X]补 + [-Y]补
=01011+11011=100110=00110=(6)10
注,最高 1位已经超过字长故应丢掉
[X - Y]补 = [0110]补 =00110
计算机组成原理 34
例 设 x=1010,y=-1010,求 [x]补 和 [y]补 。
解,根据补码的编码方法,正数的补码与它的二进制表示相同,
所以加上符号位 0后得
[x]补 =01010 [x]补 =00001010
负数的补码 的编码方法
1)将二进制代码前加 0 0 1 0 1 0
2)再全部按位取反 1 0 1 0 1
3)然后在最低位上加 1 1 0 1 1 0 [y]补 =10110
正数的补码 在其二进制代码前加上符号位 0;
负数的补码 是将二进制代码前加 0后,再全部按位取反,然后在
最低位上加 1。
补码编码的简便方法
计算机组成原理 35
原码与补码之间的转换
已知原码求补码
正数 [X]补 =[X]原
负数 符号除外,各位取反,末位加 1
例, X= -1001001
[X]原 =11001001
[X]补 =10110110+1=10110111
[X]补 = 27+1+X=100000000-1001001= 10110111
1 0 0 0 0 0 0 0 0
- 1 0 0 1 0 0 1
1 0 1 1 0 1 1 1
更简单的方法是?
计算机组成原理 36
由 [X]补 求 [-X]补
运算过程是,将 [X]补 连同符号一起将各位取反,末位再加 1。
例,设字长 N=8位
X= +100 1001
[X]补 = 0100 1001
各位取反 1011 0110
末位再加 1 1011 0111
即,[-X]补 = 1011 0111
计算机组成原理 37
求值方法
x = -x02n + x12n-1 + … + xn-12 + xn
例如,10000100 的真值为 -128+4=-124
补码与真值之间的转换
补码
符号位为, 1” --负,余下求补为数值部分
符号位为, 0” --正,余下为数值部分
例, [X]补 = 0100 1001 X= 0100 1001
例,[X]补 =1000 0000 X=- 1000 0000B = 80H =-128
计算机组成原理 38
(1)定点小数定义
x
(2 – 2-n) + x -1 ? x ? 0
0 ? x < 1[x]
反 =
一般情况下,
对于正数 x = +0.x1x2???xn,则有:
[x]反 = 0.x1x2???xn
对于负数 x = -0.x1x2???xn,则有
[x]反 = 1.x1x2???xn
3、反码表示法
所谓反码,就是二进制的各位数码 0变为 1,1变为 0。
计算机组成原理 39
例,x = 0.10110 -0.10110 0.0000
[ x ]反 =
(2)由反码求补码的公式
(2-2-n) + x[x]反 =
2 + x[x]补 =
由反码与补码的定义
得,[x]
反 + 2-n[x]补 =
即:若要一个
负数变补码,其方
法是符号位置 1,
其余各位 0变 1,1
变 0,然后在最末
位 (2-n)上加 1。
0.10110 1.01001 0.0000
1.1111
计算机组成原理 40
(3)定点整数定义
x
(2n+1 –1) + x -2n ? x ? 0
0 ? x < 2n[x]
反 =
(4) 结论
负数 反码 为符号位跟每位数的反,0正 1负;
反码 零有两个编码,+0 和 -0 的编码不同;
反码 难以用于加减运算;
反码 的表数范围与原码相同。
计算机组成原理 41
4、移码表示法
移码通常用于表示浮点数的阶码。
假设 定点整数 移码形式为 x0 x1 x2 ··· xn时,移码的定义
是:
2n + x -2n ? x ? 2n[x]移 =
(1)移码定义
8 位移码表示的机器数为数的真值在数轴上 向右平
移 了 128 个位置。
0
-128
+127负数 正数
机器数
表示范围,00000000 ~ 11111111
计算机组成原理 42
例 1:当正数 x = +10101 时,
[x]移 = 25 + 10101 = 1,10101 ;
例 2:当负数 x = -10101 时,
[x]移 = 25 +x = 25 – 10101 = 0,01011
例 3,0的移码是唯一的,即:
[+0]移 = [ 0]移 = 100… 00
[注意 ],移码中符号位 x0表示的规律与原码、
补码、反码相反 ——,1” 正,,0” 负。
计算机组成原理 43
补码的定义,x2n+1 + x -2n ? x ? 00 ? x < 2
n
[x]补 =
移码的定义, 2n + x -2n ? x ? 2n[x]移 =
当 0 ? x < 2n 时,[x]补 + 2n[x]移 =
当 -2n ? x ? 0 时,2n +[x]补 - 2n-1 = [x]补 - 2n [x]移 =
(2)移码和补码的关系,
计算机组成原理 44
移码、补码和真值之间的关系
真值
(十进制)
真值
(二进制)
[x]补
(补码)
[x]移
(移码)
-128 -1000,0000 1000,0000 0000,0000
-127 -0111,1111 1000,0001 0000,0001
… … … …
-1 -0000,0001 1111,1111 0111,1111
0 0000,0000 0000,0000 1000,0000
1 0000,0001 0000,0001 1000,0001
… … …
127 0111,1111 0111,1111 1111,1111
计算机组成原理 45
? 在移码中,最高位为 0表示负数,最高位为 1表示正数,这与原
码、补码、反码的符号位取值正好 相反 。
? 移码为全 0时所对应的真值最小,为全 1时所对应的真值最大 !
因此,移码的大小直观地反映了真值的大小,这将有助于两个
浮点数进行阶码大小比较。
? 真值 0在移码中的表示形式是唯一的,即:
[+0]移 = [ 0]移 = 100… 00
? 移码把真值映射到 一 个正数域,所以可将移 码 视 为 无符号数,
直接按 无 符号数规则比较大小。
? 同一 数值的移码和补码除最高位相反外,其他各位相 同 。
(3)移码的特点
计算机组成原理 46
码制表示法小结
[X]原, [X]反, [X]补 用, 0” 表示正号,用, 1” 表示负号;
[X]移 用, 1” 表示正号,用, 0” 表示负号。
如果 X为正数,则 [X]原 =[X]反 =[X]补 。
如果 X为 0,则 [X]补, [X]移 有唯一 编码,
[X]原, [X]反 有两种编码。
移码与补码 的形式相同,只是 符号位相反 。
计算机组成原理 47
数据四种机器表示法中:
(1)移码表示法主要用于表示浮点数的阶码。
(2)补码表示对加减法运算十分方便,因此目前机器中
广泛采用补码表示法。
(3)在一些机器中,数用补码表示,补码存储,补码运算。
在有些机器中,数用原码进行存储和传送,运算时改用补码。
还有些机器在做加减法时用补码运算,在做乘除法时用原码运
算。
5、小结
计算机组成原理 48
例,设机器字长 16位,定点表示,尾数 15位,数符 1位,问:
(1)定点原码整数表示时,最大正数是多少?最小负数是多少?
(2)定点原码小数表示时,最大正数是多少?最小负数是多少?;
解, (1)定点原码整数表示
最大正数值= (215- 1)10= (+ 32767)10
0111 111 111 111 111
最小负数值=- (215- 1)10= (- 32767)10
1111 111 111 111 111
(2)定点原码小数表示
最大正数值= (1- 2- 15)10= (+ 0.111...11)2
最小负数值=- (1- 2- 15)10= (- 0.111..11)2
计算机组成原理 49
任意一个十进制数 N 可以写成
N = 10E ×M
计算机中一个任意进制数 N 可以写成
N=R e × m
m, 尾数,是一个纯小数。
e, 浮点的 指数,是一个整数。
R, 基数,对于二进计数值的机器是一个常数,一般规定
R 为 2,8或 16。
浮点数的表示方法
9× 10- 28 = 0.9 × 10-27
2× 1033 = 0.2 × 1034
——N =10E·M (十进制表示)
计算机组成原理 50
尾数,用 定点小数 表示,给出有效数字的位数,
决定了浮点数的 表示精度 ;
阶码,用 定点整数 形式表示,指明小数点在数据中的位置,
决定了浮点数的 表示范围 。
Es E1 E2 …… E m Ms M1 M2 …… M n
阶符 阶码 数符 尾数
一个机器浮点数由 阶码 和 尾数 及其 符号 位组成:
(2) 浮点数的标准格式 (N=R e.m)
为便于软件移植,使用 IEEE( 电气和电子工程师协会)标准
IEEE754 标准,尾数用 原码; 阶码用 移码; 基为 2
计算机组成原理 51
S——尾数符号,0正 1负;
M——尾数,纯小数表示,小数点放在尾数域的最前面。
采用原码表示。
E——阶码,采用,移码” 表示 ;
阶符采用隐含方式,即采用,移码” 方法来表示正负指数。
? 按照 IEEE754 的标准,32位浮点数和 64位浮点数的标准格
式为,
S E M
31 30 23 22 0
32位
S E M
63 62 52 51 0
64位
计算机组成原理 52
(3) 浮点数的规格化表示
一个浮点数有不同的表示:
0.5; 0.05?101 ; 0.005 ?102 ; 50 ?10-2
为提高数据的表示精度,需做规格化处理。
浮点数是数学中实数的子集合,由一个纯小数乘上一
个指数值来组成。
计算机组成原理 53
浮点数的 规格化
规格化目的:
为了提高数据的 表示精度
为了数据表示的 唯一性
尾数为 R进制的规格化,
绝对值 大于或等于 1/R
二进制原码的规格化数的 表现形式,
正数 0.1xxxxxx
负数 1.0xxxxxx
正数 0.1xxxxxx
负数 1.1xxxxxx
补码尾数的规格化的 表现形式,
尾数的最高位与符号位相反
计算机组成原理 54
把不满足这一表示要求的尾数,变成满足这一要求的尾数
的操作过程,叫作浮点数的 规格化处理,通过 尾数移位和修改
阶码实现 。
在计算机内,其纯小数部分被称为浮点数的尾数,对非 0
值的浮点数,要求尾数的绝对值 必须 >= 1/2,即尾数域的最
高有效位应为 1,称满足这种表示要求的浮点数为 规格化表示,
0.1000101010
规格化处理:
计算机组成原理 55
既然非 0 值浮点数的尾数数值最高位必定为 1,则
在保存浮点数到内存前,通过尾数左移,强行把该位去掉,
用同样多的尾数位就能多存一位二进制数,有利于提高数据
表示精度,称这种处理方案使用了 隐藏位 技术。
0.1100010 ? 1.100010
当然,在取回这样的浮点数到运算器执行运算时,必须先
恢复该隐藏位。
隐藏位技术,
计算机组成原理 56
(4) 规格化浮点数的真值
x = (-1)s ? (1.M ) ? 2E- 127 e =E – 127
一个规格化的 32位浮点数 x 的真值为:
S E M
31 30 23 22 0
= 2n + x -2n ? x ? 2n
[x]移 = x0 x1 x2 ··· xn
32位浮点数格式:
移码定义:
x = ( –1)s× (1.M )× 2E- 1023
一个规格化的 64位浮点数 x 的真值为:
这里 e是真值,E 是 机器数
计算机组成原理 57
例,若浮点数 x 的二进制存储格式为 (41360000)16,求
其 32位浮点数的十进制值。
解, 0100,0001,0011,0110,0000,0000,0000,0000
数符, 0
阶码, 1000,0010
尾数,011,0110,0000,0000,0000,0000
指数 e= 阶码- 127= 10000010- 01111111 = 00000011=(3)10
包括隐藏位 1的尾数:
1.M= 1.011 0110 0000 0000 0000 0000= 1.011011
于是有 x= (- 1)s× 1.M× 2e
=+ (1.011011)× 23=+ 1011.011= (11.375)10
计算机组成原理 58
例, 将十进制数 20.59375转换成 32位浮点数的二进制格式来存储
解,首先分别将整数和分数部分转换成二进制数:
20.59375= 10100.10011
然后移动小数点,使其在第 1,2位之间
10100.10011= 1.010010011× 24 e= 4
于是得到,e =E – 127
S= 0,E= 4+ 127= 131=1000,0011,M= 010010011
最后得到 32位浮点数的二进制存储格式为
0100 0001 1010 0100 1100 0000 0000 0000= (41A4C000)16
计算机组成原理 59
解, -0.75 = -3/4 = -0.112 = -1.1× 2-1
=(-1)1× (1 + 0.1000 0000 0000 0000 0000 000)× 2-1
=(-1)1× (1 + 0.1000 0000 0000 0000 0000 000)× 2126-127
s=1,E= 12610= 011111102,F = 1000 … 000。
1 011,1111,0 100,0000,0000,0000,0000,0000
B F 4 0 0 0 0 0 H
例,将十进制数 -0.75表示成单精度的 IEEE 754标准代码
计算机组成原理 60
解,S=1,E=129,F = 1/4 = 0.25,
(-1)1× (1+0.25)× 2129-127
= -1× 1.25× 22
= -1.25× 4
= -5.0
例,求如下 IEEE 754 单精度浮点数的十进制数值:
1 10000001 01000000000000000000000
解,12310=11110112= 0.11110110002× 27
[7]移 =10000+00111 = 10111
[0.1111011000]补 =0.1111011000
[123]浮 =0 10111 1111011000
例,对数据 12310作规格化浮点数的编码,假定 1位符号位,基
数为 2,阶码 5位,采用移码,尾数 10位,采用补码。
计算机组成原理 61
IEEE754浮点数的范围
格式 最小值 最大值
单精度 E=1,M=0,
1.0× 21-127 = 2-126
E=254,f=.1111 …,
1.111… 1× 2254-127
= 2127× (2-2-23)
双精度 E=1,M=0,
1.0× 21-1023 =2-1022
E=2046,f=.1111 …,
1.111… 1× 22046-1023
=21023× (2-2-52)
计算机组成原理 62
浮点数标准 (IEEE754)
IEEE 单精度浮点数编码格式
符号位 阶码 尾数 表示
0/1 255 非 0 NaN
0/1 255 非 0 NaN
0 255 0 +INF
1 255 0 -INF
0/1 1-254 f (-1)s× 1.f× 2e-127
0/1 0 f(非 0) (-1)s× 0.f× 2e-126
0/1 0 0 +0/-0
计算机组成原理 63
用四位二进制代码的不同组合来表示一个十进制数码的
编码方法,称为二 —十进制编码,也称 BCD码 (Binary Coded
Decimal)。
1 二 —十进制编码原理
1,二 —十进制的编码都采用压缩的十进制串的方法,即四个二
进制位的值来表示一个十进制数码。
2,各种编码的区别在于选用哪十个状态。选择的原则是:要考
虑输入和输出时转换方便;内部运算时,加、减运算规则要
尽量简单;在特定场合,可能有其它一些要求。
3,从每个二进制位是否有确定的位权区分,可把二 —十进制编
码分为 有权码 和 无权码 。
十进制数码的编码
计算机组成原理 64
主要有两种形式;
( l) 字符形式。 即一个字节存放一个十进制数位或符号
位,存放的是 0~ 9十个数字和正负号的 ASCll编码值。
例如,+ 123的编码为 2B 31 32 33, 占用
4个连续的字节,这里的 2B,31,32和 33是用十六进制形式
给出的编码,2B表示正号,31,32和 33分别表示数字 1,2和
3。一 123在主存中为 2D 31 32 33,其中 2D为负号。
这种表示方式运算起来很不方便,因为它的高 4位不具有
数值的意义,它 主要用在非数值 计算的应用领域。
( 2) 压缩的十进制数形式 。用一个字节存放两个十进制数
位,既节省了存储空间,又便于完成十进制数的算术运算、其
值用 BCD码或 ASCll码的低 4位表示。符号位也占半个字节并放
在最低数字位之后,其值可从 4位二进制码中的 6种冗余状态中
选用。
例如,用 C( l2) 表示正号; D( 13) 表示负号。并规定数
字和符号位个数之和必须为偶数,否则在最高数字之前补一个
0。例如,+ 123被表示成 12 3C( 2个字节),一 12被表示成 01
2D( 2个字节)。
计算机组成原理 65
无权码中,用的较多的是余 3码 (Excess-3 code)和格雷
码 (Gray code),格雷码又称循环码。
1.余 3码
( 1) 余 3码是在 8421码的基础上,把每个代码都加上 0011而形
成的。
( 2) 普通 8421码的加法器仍能为余 3码加法器直接利用。
( 1) 格雷码的编码规则是使相邻的两个代码,只有一个二进制
位的状态不同,其余三个二进制位必须有相同状态。
( 2) 优点:从一个编码变到下一个相邻编码时,只有一个位的
状态发生变化,有利于保证代码变换的连续性。在模拟 /数
字转换和产生节拍电位等应用场合特别有用。
有关二 —十进制的部分编码方案列于表中。
2.格雷码
计算机组成原理 66
二 —十进制编码的部分编码方案
1001 1111 1111 11111111 1100 0100 1000
100111001110 10111000111011101000
0111 1101 1100 1001 1100 1010 00011000
00111010100110111010101011000110
0101 1011 1000 1011 0111 1000 1110 1011
1010
0010
0110
01000001
0011
0010
0110
0100
0101
0110
0111
0001
0011
0100
1000
0111
0110
0101
0100
0001
0011
0101
0111
0001
0010
0011
0100
0001
0010
0011
0100
000000000011000000000000 00000000
9
8
7
6
5
1
2
3
4
0
格雷码
(2)
格雷码
(1)
余 3码431184-2-152112421
无权码有权码十进制
符号 (BCD)8421
计算机组成原理 67
字符的表示方法
现代计算机处理:
数值领域的问题;
非数值领域的问题:需引入文字、字母以及某些
专用符号,以便表示文字
语言、逻辑语言等信息。
目前国际上普遍采用的字符系统是七位的 ASCII码 (美国国
家信息交换标准字符码 ):
? 包括 128个元素,
? 因此二进制编码需 7位,加一位偶校验位,共 8位一个字节。
非数值数据
计算机组成原理 68
ASCII码
,美国标准信息交换代码, (American Standard Code
for Information Interchange),简称 ASCII码。 7位二进制
编码,可表示 27=128个字符。
ASCII码中,编码值 0~ 31不对应任何可印刷(或称有字
形)字符,通常称它们为控制字符,用于通信中的通信控制
或对计算机设备的功能控制。编码值为 32的是空格(或间隔)
字符 SP。 编码值为 127的是删除控制 DEL码。其余的 94个字符
称为可印刷字符。
字符编码
EBCDIC码 (Extended Binary Coded Decimal
Interchange Code,扩展 BCD码 ),它是 8位二进制编码,可
以表示 256个编码状态,但只选用其中一部分。
主要用在 IBM公司生产的各种机器中。
EBCDIC码
计算机组成原理 69
A S C I I 字符表
0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
0 0 0 0 NUL D L E SP 0 @ P ` p
0 0 0 1 S O H D C 1 ! 1 A Q a q
0 0 1 0 S T X D C 2 " 2 B R b r
0 0 1 1 E T X D C 3 # 3 C S c s
0 1 0 0 E O T D C 4 $ 4 D T d t
0 1 0 1 E N G N A K % 5 E U e u
0 1 1 0 A C K S Y N & 6 F V f v
0 1 1 1 B E L ETB ' 7 G W g w
1 0 0 0 BS C A N ( 8 H X h x
1 0 0 1 HT EM ) 9 I Y i y
1 0 1 0 LF S U B *, J Z j z
1 0 1 1 VT ESC + ; K [ k {
1 1 0 0 FF FS,< L \ l |
1 1 0 1 CR GS - = M ] m }
1 1 1 0 SO RS, > N ? n ~
1 1 1 1 SI US /? O ? o D E L
注,H 表示高 3 位,L 表示低 4 位。
H
L
计算机组成原理 70
1,涉及多种编码:首先将汉字转换成计算机能接收的编码,称
为 汉字输入码,输入码进入计算机后必须转换成 汉字内码 才
能进行处理。为了显示输出汉字或打印输出汉字,需要经过
一个变换,将汉字内码转换成 汉字字形码 。此外,为了使不
同的汉字处理系统之间能够交换信息,还应存在汉字交换码。
2,目前存在的汉字编码输入方案可以归纳为四类,即数字编码,
如区位码;字音编码,如拼音码;字形编码,如五笔字型;
汉字混合编码等。
3,1981年我国制定了《信息交换用汉字编码字符集基本集
GB2312-80,国家标准。每个二进制编码用两个字节表示。
共收录一级汉字 3755个,二级汉字 3008个,各种符号 682个,
共计 7445个。
汉字的 表示方法
注意,汉字的输入编码、汉字内码、字模码是计算机中用于
输入、内部处理、输出三种不同用途的编码,不要混为一谈。
计算机组成原理 71
汉字处理
汉字的编码与输入
1,数字编码
数字编码是用数字串代表一个汉字的输入, 常用:区位码
例,中 —5448 国 —2590 → —0190 ∑ —0138 か —0411
2,拼音码
用汉语拼音输入汉字 。 例,ZHONG—中 GUO—国
汉字处
理程序
代码转
换程序
码表
字型
检索程序
显示
驱动程序
汉字库 显示存储器 显示器
汉字键盘
输入码 汉字机内码
( 2字节)
汉字字
型点阵
(32字节 )
计算机组成原理 72
3、字型编码
以汉字的形式确定编码 。 常用:五笔字型
4,其它输入方法
郑码, 智能等
汉字的存储
字型码 ——用点阵组成的汉字的代码 ——构成字库
机内码 ——由于汉字的存储, 交换, 查询等
00,80
00,80
20,80
10,80
11,FE
20,10
21,08
22,04
0C,03
英文内码 0 X X X X X X X
汉字内码 1 X X X X X X X
1 X X X X X X X
计算机组成原理 73
汉字的存储
区位码, 国标码与机内码的关系
区码
第一机内码
国标码第一字节
+160(A0H) +128(80H)
+32(20H)
位码
第二机内码
国标码第二字节
+160(A0H) +128(80H)
+32(20H)
汉字的输出
汉字终端
汉字打印机 带有独立的汉字库
微机中,利用通用的显示器和打印机在主机内部由汉
卡形成点阵,送到输出设备 ——图形汉字
计 算 机 组 成 原 理
第四、五讲
2009年 11月 10日
信息表示与编码
计算机组成原理 2
1,进位计数制以及相转换
十进制, 二进制, 八进制, 十六进制
2,数值数据和非数值数据的表示方法
数值数据
定点数 ----原 反 补 移
浮点数 ----IEEE754
BCD码
非数值数据 ASCII,汉字
本讲安排
计算机组成原理 3
本讲将解决的主要问题
计算机中
数值数据
非数值数据
是如何表示?
计算机组成原理 4
1、进位计数制
进位计数制,用少量的数字符号,按先后次序把它们排成数位,
由低到高进行计数,计满进位,这样的方法称为进位计数制
基数,进位制基本特征数,即所用到的数字符号个数
例如 10进制, 0~9 十个数码表示,基数为 10
权,进位制中各位, 1” 所表示的值为该位的权
常见的进位制,2,8,10,16进制
计算机组成原理 5
十进制数的多项式表示,
N10=dn-1 × 10n-1 + dn-2 × 10n-2 +? ?? ?? ?d1 × 101 + d0
× 100 + d-1 × 10-1 + d-2 × 10-2 + ?? ?? ??d-m × 10-M
m,n为正整数,其中 n为整数位数; m为小数位数。 Di表
示第 i位的系数,10i称为该位的权,
1、十进制 (Decimal)
基数,10; 符号,0,1,2,3,4,5,6,7,8,9
计算规律,,逢十进一, 或, 借一当十,
例如,一个十进制数 123.45的表示
123.45 =1× 102+ 2× 101+ 3× 100 + 4× 10-1+ 5× 10-2
注:等式左边为并列表示法等式右边为多项式表示法
计算机组成原理 6
2、二进制 (Binary)
二进制的多项式表示,
N2=dn-1 × 2n-1 + dn-2 × 2n-2 +? ?? ?? ?d1 × 21 + d0 × 20
+ d-1 × 2-1 + d-2 × 2-2 + ? ?? ?? ?d-m × 2-m
其中 n为整数位数; m为小数位数。 Di表示第 i位的系数,2i
称为该位的权,
基数,2
符号,0,1
计算规律,逢二进一或借一当二
计算机组成原理 7
3、十六进制 (Hexadecimal)
二进制的多项式表示,
N16=dn-1 × 16n-1 + dn-2 × 16n-2 +? ?? ?? ?d1 × 161 + d0
× 160 + d-1 × 16-1 + d-2 × 16-2 + ?? ?? ??d-m × 16-m
其中 n为整数位数; m为小数位数。 Di表示第 i位的系数,16i称
为该位的权,
基数,16
符号,0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
计算规律,逢十六进一或借一当十六
例如十六进制数 (2C7.1F)16的表示
(2C7.1F)16=2 × 162+ 12 × 161+ 7 × 160+ 1 × 16-1+ 15 × 16-2
计算机组成原理 8
4,进位计数制之间的转换
1) R进制转换成十进制的方法
按权展开法,先写成多项式,然后计算十进制结果,
N= dn-1dn-2? ?? ?? ?d1d0d-1d-2 ? ?? ?? ?d-m
=dn-1 × Rn-1 + dn-2 × Rn-2 +? ?? ?? ?d1 × R1 + d0 × R0 +
d-1 × R-1 + d-2 × R-2 + ?? ?? ??d-m × R-m
例,写出 (1101.01)2,(237)8,(10D)16的十进制数
(10D)16=1× 162+13× 160=256+13=269
(1101.01)2=1× 23+1× 22+0× 21+1× 20+0× 2-1+1× 2-2
=8+4+1+0.25=13.25
(237)8=2× 82+3× 81+7× 80 =128+24+7=159
计算机组成原理 9
2)十进制转换成二进制方法
一般分为两个方法,
方法 1、整数部分的转换
除 2取余法(基数除法)
小数部分的转换
乘 2取整法(基数乘法)
方法 2,减权定位法
计算机组成原理 10
除基取余法,把给定的除以基数,取余数作为最低位的系数,然
后继续将商部分除以 基数,余数作为次低位系数,重复操
作直至商为 0
例如:用基数除法将 (327)10转换成二进制数
2 327 余数
2 163 1
2 81 1
2 40 1
2 20 0
2 10 0
2 5 0
2 2 1
2 1 0
2 0 1
(327)10 =(101000111) 2
计算机组成原理 11
把给定的十进制小数乘以 2,取其整数作为二进制小数的第
一位,然后取小数部分继续乘以 2,将所的整数部分作为第二位
小数,重复操作直至得到所需要的二进制小数
例如,将 (0.8125) 10 转换成二进制小数
整数部分 0.
2 × 0.8125=1.625 1
2 × 0.625 =1.25 1
2 × 0.25 =0.5 0
2 × 0.5 =1 1
(0.8125) 10 =(0.1101) 2
乘基取整法 (小数部分的转换 )
计算机组成原理 12
例,将 (0.2)10 转换成二进制小数
整数部分 0
0.2 × 2 = 0.4 0
0.4 × 2 = 0.8 0
0.8 × 2 = 1.6 1
0.6 × 2 = 1.2 1
0.2 × 2 = 0.4 0
0.4 × 2 = 0.8 0
0.8 × 2 = 1.6 1
0.6 × 2 = 1.2 1
(0.2)10 = [ 0.001100110011…,] 2
计算机组成原理 13
减权定位法
将十进制数依次从二进制的最高位权值进行比较,若够减则对应
位置 1,减去该权值后再往下比较,若不够减则对应位为 0,重复操作直
至差数为 0。
512 256 128 64 32 16 8 4 2 1
例如,将 (327)10 转换成二进制数 256<327<512
327 - 256=71 1 256
71 < 128 0 128
71 - 64 =7 1 64
7 < 32 0 32
7 < 16 0 16
7 < 8 0 8
7 - 4 =3 1 4
3 – 2 =1 1 2
1 – 1 =0 1 1
计算机组成原理 14
二进制 (B)转换成八进制 (Q)
例,(10110111,01101) 2
(10110111.01101) 2 =(267.32)8
八进制, 2 6 7, 3 2
二进制, 010,110,111, 011,010
二进制, 10,110,111, 011,01
3)其它进制之间的直接转换法
八进制 (Q)转换二进制 (B)
例如, (123.46 ) 8
=(001,010,011,100,110 ) 2
=(1010011.10011)2
计算机组成原理 15
二进制 (B)转换成十六进制 (H)
例, (110110111,01101) 2
(10110111.01101) 2 =(1B7.68)16
十六进制, 1 B 7, 6 8
二进制, 0001,1011,0111, 0110,1000
二进制, 1,1011,0111, 0110,1
10110111.01101B =1B7.68H
十六进制 (H)转换成二进制 (B)
例, (7AC.DE ) 16
=(0111,1010,1100.1101,1110 ) 2
=(11110101100,1101111 )2
计算机组成原理 16
常用信息分类及表示
信
息
数值数据
非数值数据 --
无符号数 --
有符号数 浮点数
定点数
十进制数
定点整数
定点小数
原码
补码
反码
移码
正整数
字符、汉字等
计算机组成原理 17
真值,正、负号加某进制数绝对值的形式称为真值。
如 +3,-5等,即实际值。
机器数,符号以及数值都数码化的数称为机器数
如, X=01011 Y=11011
即真值在机器中的表示,称为机器数
名词解释:真值和机器数
计算机组成原理 18
计算机中常用的数据表示格式有两种,
? 定点格式 ——容许的数值范围有限,但要求的处理硬件比
较简单。
? 浮点格式 ——容许的数值范围很大,但要求的处理硬件比
较复杂。
1.定点数的表示方法
定点表示,约定机器中所有数据的小数点位置是固定不变的。
(由于约定在固定的位置,小数点就不再使用记号,,”
来表示。 )
通常将数据表示成 纯小数 或 纯整数。
数据表示
计算机组成原理 19
定点数, 小数点位置固定不变的数
定点整数, 小数点固定在 最低位 数的 右面
(b) 定点小数
x
7
x
6
x
5
x
4
x
3
x
2
x
1
x
0
(a) 定点整数
x
6
x
7
x
5
x
4
x
3
x
2
x
1
x
0
数值范围:
纯小数 0≤ |x|≤ 1 – 2-n
纯整数 0≤ |x|≤ 2n – 1
目前计算机中多采用定点纯整数表示,因此将定点数表示
的运算简称为 整数运算 。
定点小数, 小数点固定在 最高位 数的 后面,即纯小数表示
计算机组成原理 20
无符号数的编码
正整数
数值表示:
x = x0x1x2… xn xi={0,1},0≤i≤n
x02n + x12n-1 + … + xn-121 + xn
数值范围
0≤x≤2n+1-1
例如,
x=010101
其数值 =24+22+20=21
在数据处理的过程中,如不需要设置符号位
可用全部字长来表示数值大小。如 8位无符号数的
取值范围是 0~255( 28 -1)。
计算机组成原理 21
计算机中 定点数 表示方法 ——
原码、补码、反码、移码 。
计算机组成原理 22
若 定点小数 的原码形式为 x0,x1 x2 ··· xn,( 共 n+1位)则原
码表示的定义是:
式中 [x]原 是机器数,x是真值。
1、原码表示法
(1)定点小数
x
1 – x = 1+ |x| -1 < x ? 0
0 ? x < 1[x]
原 =
数的机器码表示
若 定点整数 的原码形式为 x0 x1 x2 ··· xn,则原码表示的定
义是:
(2)定点整数
x
2n – x = 2n + |x| -2n < x ? 0
0 ? x < 2n[x]
原 =
计算机组成原理 23
例 1,x = +0.1001,则 [x]原 = 0.1001
x = -0.1001,则 [x]原 = 1+ |x| = 1.1001
例 2,x = 0.10110 ; -0.10110; 0.0000
对于 0,原码机器中往往有,+0”、,-0”之分,故有两种形
式:
[+0]原 =0.000...0
[ -0]原 =1.000...0
[x]原 = 0.10110; 1.10110; 0.0000 1.0000
例 3,x = +1011 总共用 5位表示,n=4
[x]原 =01011
x = -1011
[x]原 = 2n + |x|=10000 + |-1011|=11011
计算机组成原理 24
原码小数的表示范围,
最大值, 1- 2-n
最小值,-(1- 2-n)
若原码小数的位数是 8位时,其该数表示的最大值、最小值:
8位, 127/128,-127/128
原码整数的表示范围,
最大值, 2n-1
最小值,-(2n-1)
若 原码整数 的位数是 8位,其表示的最大值、最小值
8位, 127,-127,
计算机组成原理 25
原码 为符号位加上数的绝对值,0正 1负 ;
原码 零有两个编码,+0和 -0编码不同 ;
原码 加减运算复杂,乘除运算规则简单;
原码 表示简单,易于同真值之间进行转换。
(3)结论
计算机组成原理 26
2、补码表示法
(1)模的概念
假设 两位 十进制数计算,
? 77 — 38 =?
? 77 + 62 = 139
77 — 38 = 77 + 62 = 39 ( mod 100)
由此可以看出,减 38和 加 62是 等价的,前提是说对 模为 100是
正确的。这个 100在数学上称为 模数
计算机组成原理 27
计算机中运算器, 寄存器, 计数器都有一定的位数, 不可能
容纳无限大的任意数 。 当运算结果超出实际的最大表示范围,
就会发生溢出, 此时所产生的溢出量就是模 ( module) 。
因此, 可以把模定义为 一个计量器的容量 。 如:一个 4位的计
数器, 它的计数值为 0--15。 当计数器计满 15之后再加 1,这个
计数器就发生溢出, 其溢出量为 16,也就是模等于 16。
? 定点小数的溢出量为 2,即以 2为模;
? 一个字长为 n+1位的定点整数的溢出量为 2n+1,即
以 2n+1为模 。
模的概念
计算机组成原理 28
定义,
任意一个数 X的补码记为 [x]补,
[x]补 = X + M ( Mod M)
当 X>0时 X + M >M 自动丢失,
[x]补 = X ( Mod M)
当 X<0时 X + M = M - | X | < M,
[x]补 = X + M ( Mod M)
计算机组成原理 29
若 定点小数 的补码形式为 x0,x1 x2 ··· xn,则补码表示的定
义是:
(2)定点小数
x 0 ? x < 1
2 + x = 2 – |x| -1 ? x ? 0[x]补 = ( mod 2)
例, x = +0.1011,则 [x]补 = 0.1011
x = -0.1011,则 [x]补 = 10+x = 10.0000-0.1011= 1.0101
对于 0,[+0]补 = [-0]补 = 0.0000 (mod 2)
注意,0的补码表示只有一种形式。
计算机组成原理 30
若 定点整数 的补码形式为 x0 x1 x2 ··· xn,则补码表示的定
义是:
(3)定点整数
x
2n+1 + x = 2n+1 – |x| -2n ? x ? 0
0 ? x < 2n[x]
补 = ( mod 2n+1)
例, x = +0111,则 [x]补 =00111
x = -0111,则 [x]补 =24+1 – |-0111|=100000 – 0111=11001
计算机组成原理 31
n+1位 补码 整数, 2n -1 ___ -2n
n+1位 补码 小数, 1- 2-n ___ - 1
若 补码小数 的位数是 8位 时,其该数表示的最大值、最小值
:
- 1 __ 1- 2-7 即 -1 — 127/128
若 补码整数 的位数是 8位,其表示的最大值、最小值, -128 -
- 127
补码的表数范围
计算机组成原理 32
补码 最高一位为符号位,0正 1负 ;
补码 零有唯一编码;
补码 能很好用于加减运算。
(4)特点
补码 满足 [-x]补 + [x]补 =0 [+7]补 =00111
最高位参与演算,与其它位一样对待。
[-7]补 =11001
扩展方便。 5位的 补码 扩展为 8位 00111 00000111
11001 11111001
算术移位。假设 [x]补 =x0,x1 x2 ··· xn,
[x/2]补 =x0,x0 x1 x2 ··· xn-1
计算机组成原理 33
最大的优点就是将减法运算转换成加法运算。
[X+Y]补 = [X]补 +[Y]补
[X - Y]补 = [X]补 + [-Y]补
例如, X=(11)10=(1011)2 Y=(5)10=(0101)2
已知字长 n=5位
[X]补 + [-Y]补
=01011+11011=100110=00110=(6)10
注,最高 1位已经超过字长故应丢掉
[X - Y]补 = [0110]补 =00110
计算机组成原理 34
例 设 x=1010,y=-1010,求 [x]补 和 [y]补 。
解,根据补码的编码方法,正数的补码与它的二进制表示相同,
所以加上符号位 0后得
[x]补 =01010 [x]补 =00001010
负数的补码 的编码方法
1)将二进制代码前加 0 0 1 0 1 0
2)再全部按位取反 1 0 1 0 1
3)然后在最低位上加 1 1 0 1 1 0 [y]补 =10110
正数的补码 在其二进制代码前加上符号位 0;
负数的补码 是将二进制代码前加 0后,再全部按位取反,然后在
最低位上加 1。
补码编码的简便方法
计算机组成原理 35
原码与补码之间的转换
已知原码求补码
正数 [X]补 =[X]原
负数 符号除外,各位取反,末位加 1
例, X= -1001001
[X]原 =11001001
[X]补 =10110110+1=10110111
[X]补 = 27+1+X=100000000-1001001= 10110111
1 0 0 0 0 0 0 0 0
- 1 0 0 1 0 0 1
1 0 1 1 0 1 1 1
更简单的方法是?
计算机组成原理 36
由 [X]补 求 [-X]补
运算过程是,将 [X]补 连同符号一起将各位取反,末位再加 1。
例,设字长 N=8位
X= +100 1001
[X]补 = 0100 1001
各位取反 1011 0110
末位再加 1 1011 0111
即,[-X]补 = 1011 0111
计算机组成原理 37
求值方法
x = -x02n + x12n-1 + … + xn-12 + xn
例如,10000100 的真值为 -128+4=-124
补码与真值之间的转换
补码
符号位为, 1” --负,余下求补为数值部分
符号位为, 0” --正,余下为数值部分
例, [X]补 = 0100 1001 X= 0100 1001
例,[X]补 =1000 0000 X=- 1000 0000B = 80H =-128
计算机组成原理 38
(1)定点小数定义
x
(2 – 2-n) + x -1 ? x ? 0
0 ? x < 1[x]
反 =
一般情况下,
对于正数 x = +0.x1x2???xn,则有:
[x]反 = 0.x1x2???xn
对于负数 x = -0.x1x2???xn,则有
[x]反 = 1.x1x2???xn
3、反码表示法
所谓反码,就是二进制的各位数码 0变为 1,1变为 0。
计算机组成原理 39
例,x = 0.10110 -0.10110 0.0000
[ x ]反 =
(2)由反码求补码的公式
(2-2-n) + x[x]反 =
2 + x[x]补 =
由反码与补码的定义
得,[x]
反 + 2-n[x]补 =
即:若要一个
负数变补码,其方
法是符号位置 1,
其余各位 0变 1,1
变 0,然后在最末
位 (2-n)上加 1。
0.10110 1.01001 0.0000
1.1111
计算机组成原理 40
(3)定点整数定义
x
(2n+1 –1) + x -2n ? x ? 0
0 ? x < 2n[x]
反 =
(4) 结论
负数 反码 为符号位跟每位数的反,0正 1负;
反码 零有两个编码,+0 和 -0 的编码不同;
反码 难以用于加减运算;
反码 的表数范围与原码相同。
计算机组成原理 41
4、移码表示法
移码通常用于表示浮点数的阶码。
假设 定点整数 移码形式为 x0 x1 x2 ··· xn时,移码的定义
是:
2n + x -2n ? x ? 2n[x]移 =
(1)移码定义
8 位移码表示的机器数为数的真值在数轴上 向右平
移 了 128 个位置。
0
-128
+127负数 正数
机器数
表示范围,00000000 ~ 11111111
计算机组成原理 42
例 1:当正数 x = +10101 时,
[x]移 = 25 + 10101 = 1,10101 ;
例 2:当负数 x = -10101 时,
[x]移 = 25 +x = 25 – 10101 = 0,01011
例 3,0的移码是唯一的,即:
[+0]移 = [ 0]移 = 100… 00
[注意 ],移码中符号位 x0表示的规律与原码、
补码、反码相反 ——,1” 正,,0” 负。
计算机组成原理 43
补码的定义,x2n+1 + x -2n ? x ? 00 ? x < 2
n
[x]补 =
移码的定义, 2n + x -2n ? x ? 2n[x]移 =
当 0 ? x < 2n 时,[x]补 + 2n[x]移 =
当 -2n ? x ? 0 时,2n +[x]补 - 2n-1 = [x]补 - 2n [x]移 =
(2)移码和补码的关系,
计算机组成原理 44
移码、补码和真值之间的关系
真值
(十进制)
真值
(二进制)
[x]补
(补码)
[x]移
(移码)
-128 -1000,0000 1000,0000 0000,0000
-127 -0111,1111 1000,0001 0000,0001
… … … …
-1 -0000,0001 1111,1111 0111,1111
0 0000,0000 0000,0000 1000,0000
1 0000,0001 0000,0001 1000,0001
… … …
127 0111,1111 0111,1111 1111,1111
计算机组成原理 45
? 在移码中,最高位为 0表示负数,最高位为 1表示正数,这与原
码、补码、反码的符号位取值正好 相反 。
? 移码为全 0时所对应的真值最小,为全 1时所对应的真值最大 !
因此,移码的大小直观地反映了真值的大小,这将有助于两个
浮点数进行阶码大小比较。
? 真值 0在移码中的表示形式是唯一的,即:
[+0]移 = [ 0]移 = 100… 00
? 移码把真值映射到 一 个正数域,所以可将移 码 视 为 无符号数,
直接按 无 符号数规则比较大小。
? 同一 数值的移码和补码除最高位相反外,其他各位相 同 。
(3)移码的特点
计算机组成原理 46
码制表示法小结
[X]原, [X]反, [X]补 用, 0” 表示正号,用, 1” 表示负号;
[X]移 用, 1” 表示正号,用, 0” 表示负号。
如果 X为正数,则 [X]原 =[X]反 =[X]补 。
如果 X为 0,则 [X]补, [X]移 有唯一 编码,
[X]原, [X]反 有两种编码。
移码与补码 的形式相同,只是 符号位相反 。
计算机组成原理 47
数据四种机器表示法中:
(1)移码表示法主要用于表示浮点数的阶码。
(2)补码表示对加减法运算十分方便,因此目前机器中
广泛采用补码表示法。
(3)在一些机器中,数用补码表示,补码存储,补码运算。
在有些机器中,数用原码进行存储和传送,运算时改用补码。
还有些机器在做加减法时用补码运算,在做乘除法时用原码运
算。
5、小结
计算机组成原理 48
例,设机器字长 16位,定点表示,尾数 15位,数符 1位,问:
(1)定点原码整数表示时,最大正数是多少?最小负数是多少?
(2)定点原码小数表示时,最大正数是多少?最小负数是多少?;
解, (1)定点原码整数表示
最大正数值= (215- 1)10= (+ 32767)10
0111 111 111 111 111
最小负数值=- (215- 1)10= (- 32767)10
1111 111 111 111 111
(2)定点原码小数表示
最大正数值= (1- 2- 15)10= (+ 0.111...11)2
最小负数值=- (1- 2- 15)10= (- 0.111..11)2
计算机组成原理 49
任意一个十进制数 N 可以写成
N = 10E ×M
计算机中一个任意进制数 N 可以写成
N=R e × m
m, 尾数,是一个纯小数。
e, 浮点的 指数,是一个整数。
R, 基数,对于二进计数值的机器是一个常数,一般规定
R 为 2,8或 16。
浮点数的表示方法
9× 10- 28 = 0.9 × 10-27
2× 1033 = 0.2 × 1034
——N =10E·M (十进制表示)
计算机组成原理 50
尾数,用 定点小数 表示,给出有效数字的位数,
决定了浮点数的 表示精度 ;
阶码,用 定点整数 形式表示,指明小数点在数据中的位置,
决定了浮点数的 表示范围 。
Es E1 E2 …… E m Ms M1 M2 …… M n
阶符 阶码 数符 尾数
一个机器浮点数由 阶码 和 尾数 及其 符号 位组成:
(2) 浮点数的标准格式 (N=R e.m)
为便于软件移植,使用 IEEE( 电气和电子工程师协会)标准
IEEE754 标准,尾数用 原码; 阶码用 移码; 基为 2
计算机组成原理 51
S——尾数符号,0正 1负;
M——尾数,纯小数表示,小数点放在尾数域的最前面。
采用原码表示。
E——阶码,采用,移码” 表示 ;
阶符采用隐含方式,即采用,移码” 方法来表示正负指数。
? 按照 IEEE754 的标准,32位浮点数和 64位浮点数的标准格
式为,
S E M
31 30 23 22 0
32位
S E M
63 62 52 51 0
64位
计算机组成原理 52
(3) 浮点数的规格化表示
一个浮点数有不同的表示:
0.5; 0.05?101 ; 0.005 ?102 ; 50 ?10-2
为提高数据的表示精度,需做规格化处理。
浮点数是数学中实数的子集合,由一个纯小数乘上一
个指数值来组成。
计算机组成原理 53
浮点数的 规格化
规格化目的:
为了提高数据的 表示精度
为了数据表示的 唯一性
尾数为 R进制的规格化,
绝对值 大于或等于 1/R
二进制原码的规格化数的 表现形式,
正数 0.1xxxxxx
负数 1.0xxxxxx
正数 0.1xxxxxx
负数 1.1xxxxxx
补码尾数的规格化的 表现形式,
尾数的最高位与符号位相反
计算机组成原理 54
把不满足这一表示要求的尾数,变成满足这一要求的尾数
的操作过程,叫作浮点数的 规格化处理,通过 尾数移位和修改
阶码实现 。
在计算机内,其纯小数部分被称为浮点数的尾数,对非 0
值的浮点数,要求尾数的绝对值 必须 >= 1/2,即尾数域的最
高有效位应为 1,称满足这种表示要求的浮点数为 规格化表示,
0.1000101010
规格化处理:
计算机组成原理 55
既然非 0 值浮点数的尾数数值最高位必定为 1,则
在保存浮点数到内存前,通过尾数左移,强行把该位去掉,
用同样多的尾数位就能多存一位二进制数,有利于提高数据
表示精度,称这种处理方案使用了 隐藏位 技术。
0.1100010 ? 1.100010
当然,在取回这样的浮点数到运算器执行运算时,必须先
恢复该隐藏位。
隐藏位技术,
计算机组成原理 56
(4) 规格化浮点数的真值
x = (-1)s ? (1.M ) ? 2E- 127 e =E – 127
一个规格化的 32位浮点数 x 的真值为:
S E M
31 30 23 22 0
= 2n + x -2n ? x ? 2n
[x]移 = x0 x1 x2 ··· xn
32位浮点数格式:
移码定义:
x = ( –1)s× (1.M )× 2E- 1023
一个规格化的 64位浮点数 x 的真值为:
这里 e是真值,E 是 机器数
计算机组成原理 57
例,若浮点数 x 的二进制存储格式为 (41360000)16,求
其 32位浮点数的十进制值。
解, 0100,0001,0011,0110,0000,0000,0000,0000
数符, 0
阶码, 1000,0010
尾数,011,0110,0000,0000,0000,0000
指数 e= 阶码- 127= 10000010- 01111111 = 00000011=(3)10
包括隐藏位 1的尾数:
1.M= 1.011 0110 0000 0000 0000 0000= 1.011011
于是有 x= (- 1)s× 1.M× 2e
=+ (1.011011)× 23=+ 1011.011= (11.375)10
计算机组成原理 58
例, 将十进制数 20.59375转换成 32位浮点数的二进制格式来存储
解,首先分别将整数和分数部分转换成二进制数:
20.59375= 10100.10011
然后移动小数点,使其在第 1,2位之间
10100.10011= 1.010010011× 24 e= 4
于是得到,e =E – 127
S= 0,E= 4+ 127= 131=1000,0011,M= 010010011
最后得到 32位浮点数的二进制存储格式为
0100 0001 1010 0100 1100 0000 0000 0000= (41A4C000)16
计算机组成原理 59
解, -0.75 = -3/4 = -0.112 = -1.1× 2-1
=(-1)1× (1 + 0.1000 0000 0000 0000 0000 000)× 2-1
=(-1)1× (1 + 0.1000 0000 0000 0000 0000 000)× 2126-127
s=1,E= 12610= 011111102,F = 1000 … 000。
1 011,1111,0 100,0000,0000,0000,0000,0000
B F 4 0 0 0 0 0 H
例,将十进制数 -0.75表示成单精度的 IEEE 754标准代码
计算机组成原理 60
解,S=1,E=129,F = 1/4 = 0.25,
(-1)1× (1+0.25)× 2129-127
= -1× 1.25× 22
= -1.25× 4
= -5.0
例,求如下 IEEE 754 单精度浮点数的十进制数值:
1 10000001 01000000000000000000000
解,12310=11110112= 0.11110110002× 27
[7]移 =10000+00111 = 10111
[0.1111011000]补 =0.1111011000
[123]浮 =0 10111 1111011000
例,对数据 12310作规格化浮点数的编码,假定 1位符号位,基
数为 2,阶码 5位,采用移码,尾数 10位,采用补码。
计算机组成原理 61
IEEE754浮点数的范围
格式 最小值 最大值
单精度 E=1,M=0,
1.0× 21-127 = 2-126
E=254,f=.1111 …,
1.111… 1× 2254-127
= 2127× (2-2-23)
双精度 E=1,M=0,
1.0× 21-1023 =2-1022
E=2046,f=.1111 …,
1.111… 1× 22046-1023
=21023× (2-2-52)
计算机组成原理 62
浮点数标准 (IEEE754)
IEEE 单精度浮点数编码格式
符号位 阶码 尾数 表示
0/1 255 非 0 NaN
0/1 255 非 0 NaN
0 255 0 +INF
1 255 0 -INF
0/1 1-254 f (-1)s× 1.f× 2e-127
0/1 0 f(非 0) (-1)s× 0.f× 2e-126
0/1 0 0 +0/-0
计算机组成原理 63
用四位二进制代码的不同组合来表示一个十进制数码的
编码方法,称为二 —十进制编码,也称 BCD码 (Binary Coded
Decimal)。
1 二 —十进制编码原理
1,二 —十进制的编码都采用压缩的十进制串的方法,即四个二
进制位的值来表示一个十进制数码。
2,各种编码的区别在于选用哪十个状态。选择的原则是:要考
虑输入和输出时转换方便;内部运算时,加、减运算规则要
尽量简单;在特定场合,可能有其它一些要求。
3,从每个二进制位是否有确定的位权区分,可把二 —十进制编
码分为 有权码 和 无权码 。
十进制数码的编码
计算机组成原理 64
主要有两种形式;
( l) 字符形式。 即一个字节存放一个十进制数位或符号
位,存放的是 0~ 9十个数字和正负号的 ASCll编码值。
例如,+ 123的编码为 2B 31 32 33, 占用
4个连续的字节,这里的 2B,31,32和 33是用十六进制形式
给出的编码,2B表示正号,31,32和 33分别表示数字 1,2和
3。一 123在主存中为 2D 31 32 33,其中 2D为负号。
这种表示方式运算起来很不方便,因为它的高 4位不具有
数值的意义,它 主要用在非数值 计算的应用领域。
( 2) 压缩的十进制数形式 。用一个字节存放两个十进制数
位,既节省了存储空间,又便于完成十进制数的算术运算、其
值用 BCD码或 ASCll码的低 4位表示。符号位也占半个字节并放
在最低数字位之后,其值可从 4位二进制码中的 6种冗余状态中
选用。
例如,用 C( l2) 表示正号; D( 13) 表示负号。并规定数
字和符号位个数之和必须为偶数,否则在最高数字之前补一个
0。例如,+ 123被表示成 12 3C( 2个字节),一 12被表示成 01
2D( 2个字节)。
计算机组成原理 65
无权码中,用的较多的是余 3码 (Excess-3 code)和格雷
码 (Gray code),格雷码又称循环码。
1.余 3码
( 1) 余 3码是在 8421码的基础上,把每个代码都加上 0011而形
成的。
( 2) 普通 8421码的加法器仍能为余 3码加法器直接利用。
( 1) 格雷码的编码规则是使相邻的两个代码,只有一个二进制
位的状态不同,其余三个二进制位必须有相同状态。
( 2) 优点:从一个编码变到下一个相邻编码时,只有一个位的
状态发生变化,有利于保证代码变换的连续性。在模拟 /数
字转换和产生节拍电位等应用场合特别有用。
有关二 —十进制的部分编码方案列于表中。
2.格雷码
计算机组成原理 66
二 —十进制编码的部分编码方案
1001 1111 1111 11111111 1100 0100 1000
100111001110 10111000111011101000
0111 1101 1100 1001 1100 1010 00011000
00111010100110111010101011000110
0101 1011 1000 1011 0111 1000 1110 1011
1010
0010
0110
01000001
0011
0010
0110
0100
0101
0110
0111
0001
0011
0100
1000
0111
0110
0101
0100
0001
0011
0101
0111
0001
0010
0011
0100
0001
0010
0011
0100
000000000011000000000000 00000000
9
8
7
6
5
1
2
3
4
0
格雷码
(2)
格雷码
(1)
余 3码431184-2-152112421
无权码有权码十进制
符号 (BCD)8421
计算机组成原理 67
字符的表示方法
现代计算机处理:
数值领域的问题;
非数值领域的问题:需引入文字、字母以及某些
专用符号,以便表示文字
语言、逻辑语言等信息。
目前国际上普遍采用的字符系统是七位的 ASCII码 (美国国
家信息交换标准字符码 ):
? 包括 128个元素,
? 因此二进制编码需 7位,加一位偶校验位,共 8位一个字节。
非数值数据
计算机组成原理 68
ASCII码
,美国标准信息交换代码, (American Standard Code
for Information Interchange),简称 ASCII码。 7位二进制
编码,可表示 27=128个字符。
ASCII码中,编码值 0~ 31不对应任何可印刷(或称有字
形)字符,通常称它们为控制字符,用于通信中的通信控制
或对计算机设备的功能控制。编码值为 32的是空格(或间隔)
字符 SP。 编码值为 127的是删除控制 DEL码。其余的 94个字符
称为可印刷字符。
字符编码
EBCDIC码 (Extended Binary Coded Decimal
Interchange Code,扩展 BCD码 ),它是 8位二进制编码,可
以表示 256个编码状态,但只选用其中一部分。
主要用在 IBM公司生产的各种机器中。
EBCDIC码
计算机组成原理 69
A S C I I 字符表
0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
0 0 0 0 NUL D L E SP 0 @ P ` p
0 0 0 1 S O H D C 1 ! 1 A Q a q
0 0 1 0 S T X D C 2 " 2 B R b r
0 0 1 1 E T X D C 3 # 3 C S c s
0 1 0 0 E O T D C 4 $ 4 D T d t
0 1 0 1 E N G N A K % 5 E U e u
0 1 1 0 A C K S Y N & 6 F V f v
0 1 1 1 B E L ETB ' 7 G W g w
1 0 0 0 BS C A N ( 8 H X h x
1 0 0 1 HT EM ) 9 I Y i y
1 0 1 0 LF S U B *, J Z j z
1 0 1 1 VT ESC + ; K [ k {
1 1 0 0 FF FS,< L \ l |
1 1 0 1 CR GS - = M ] m }
1 1 1 0 SO RS, > N ? n ~
1 1 1 1 SI US /? O ? o D E L
注,H 表示高 3 位,L 表示低 4 位。
H
L
计算机组成原理 70
1,涉及多种编码:首先将汉字转换成计算机能接收的编码,称
为 汉字输入码,输入码进入计算机后必须转换成 汉字内码 才
能进行处理。为了显示输出汉字或打印输出汉字,需要经过
一个变换,将汉字内码转换成 汉字字形码 。此外,为了使不
同的汉字处理系统之间能够交换信息,还应存在汉字交换码。
2,目前存在的汉字编码输入方案可以归纳为四类,即数字编码,
如区位码;字音编码,如拼音码;字形编码,如五笔字型;
汉字混合编码等。
3,1981年我国制定了《信息交换用汉字编码字符集基本集
GB2312-80,国家标准。每个二进制编码用两个字节表示。
共收录一级汉字 3755个,二级汉字 3008个,各种符号 682个,
共计 7445个。
汉字的 表示方法
注意,汉字的输入编码、汉字内码、字模码是计算机中用于
输入、内部处理、输出三种不同用途的编码,不要混为一谈。
计算机组成原理 71
汉字处理
汉字的编码与输入
1,数字编码
数字编码是用数字串代表一个汉字的输入, 常用:区位码
例,中 —5448 国 —2590 → —0190 ∑ —0138 か —0411
2,拼音码
用汉语拼音输入汉字 。 例,ZHONG—中 GUO—国
汉字处
理程序
代码转
换程序
码表
字型
检索程序
显示
驱动程序
汉字库 显示存储器 显示器
汉字键盘
输入码 汉字机内码
( 2字节)
汉字字
型点阵
(32字节 )
计算机组成原理 72
3、字型编码
以汉字的形式确定编码 。 常用:五笔字型
4,其它输入方法
郑码, 智能等
汉字的存储
字型码 ——用点阵组成的汉字的代码 ——构成字库
机内码 ——由于汉字的存储, 交换, 查询等
00,80
00,80
20,80
10,80
11,FE
20,10
21,08
22,04
0C,03
英文内码 0 X X X X X X X
汉字内码 1 X X X X X X X
1 X X X X X X X
计算机组成原理 73
汉字的存储
区位码, 国标码与机内码的关系
区码
第一机内码
国标码第一字节
+160(A0H) +128(80H)
+32(20H)
位码
第二机内码
国标码第二字节
+160(A0H) +128(80H)
+32(20H)
汉字的输出
汉字终端
汉字打印机 带有独立的汉字库
微机中,利用通用的显示器和打印机在主机内部由汉
卡形成点阵,送到输出设备 ——图形汉字