2009年 7月 27日 8时 35分第二章 运算方法和运算器
数据与文字的表示方法
定点加法、减法运算
定点乘法运算
定点除法运算
定点运算器的组成
浮点运算方法和浮点运算器
2009年 7月 27日 8时 35分数据的表示方法
定点数
浮点数真值与机器数数的机器码表示方法
原码表示法
补码表示法
反码表示法
移码表示法
2.1 数据与文字的表示方法
2009年 7月 27日 8时 35分
1)定点表示法符号 数值
① 纯小数:
a、定点小数表示,Ns,N1 N2 … Nn(原码、反码、
补码)
b、范围,0≤ | X | ≤0.111 … 11
即,0≤ | X |≤1 -2-n
n位1位由于约定在固定的位置,小数点就不再使用记号,.”来表示。
2009年 7月 27日 8时 35分
② 纯整数
a,定点整数表示,Ns N1 N2 … Nn (原码、反码、
补码)
b、范围,0≤ | X | ≤111 … 11
即,0≤ | X | ≤2 n-1
由于有些数据用定点数不易表示,所以采用了浮点表示法。
2009年 7月 27日 8时 35分
2)浮点表示法
① 定义:
任意一个 R进制都可以通过移动小数点的位置写成
X=RE× M 式中:
R是基数,可以取 2,8,16,一旦定义则不能改变,
是隐含的 。 M是纯小数 ( 含数的符号 ),称为尾数,
表是数 X的全部有效数字 。
E是阶码,纯整数,指出小数点在该数中的位置 。
由于阶码可以取不同的数值,所以,小数点的位置是不确定的,这种数被称为浮点数 。
浮点数的表示格式,X=2E× M
2009年 7月 27日 8时 35分
② 浮点数的表示方案:
阶符 阶码 数符 数码Ⅰ,
Ⅱ,数符 阶符 阶码 数码
Ⅲ,—— IEEE754标准
32位 浮点数则:
数符 阶码 尾数
S E M
1位 23位8位 移码表示 原码表示真值:
1272).1()1( Es Mx
2009年 7月 27日 8时 35分尾数规格化
定义:
所谓规格化数,就是非 0的尾数,其绝对值应大于或等于
0,5。
判别方法:
如果用原码表示,规格化数的尾数应满足 1/2≤|S|<1,
即尾数的最高数值位一定为 1。
如果用补码表示,对于正数,规格化尾数满足的条件与原码相同,对于负数,规格化尾数应满足 -1/2>S≥ -1,这样,
用补码表示的规格化尾数即为 尾数数值最高位与符号位相反 。
规格化:
存储在计算机中的浮点数以及运算结果的浮点数都应为规格化数,如果尾数不是规格化数,要用移位方法把他变为规格化数,这种处理过程,称为规格化。
规格化的原码,0.1×××× 正数
1.1×××× 负数规格化的补码,0.1×××× 正数
1.0×××× 负数
2009年 7月 27日 8时 35分尾数规格化的另一种形式,1.M
例,A=24 × 0.0000000010101=2-5 × 1.0101
阶码:用移码表示,对于两个指数大小的比较和对阶操作都比较方便。
阶码与尾数的位数关系精度:
范围:
尾数指数
2009年 7月 27日 8时 35分
3)定点数表示法与浮点数表示法的比较
① 范围,浮点数 定点数>
② 设备复杂度,浮点数 定点数>
4)举例
8位二进制阶码 3位,数符尾数 5位定点数 (正小数 )
0.0000000-----0.1111111
0-----127/128
浮点数(正数)
2-11 × 0.0001--- 211 × 0.1111
1/128----7.5
2009年 7月 27日 8时 35分
[例 1] 若浮点数 x 的二进制存储格式为 (41360000)16,求其 32位浮点数的十进制值。 (采用 IEEE754标准 )
④ 于是有
x = (- 1)s× 1.M× 2e
[解,]
① 将十六进制数展开后,可得二进制数格式为
② 指数 e=阶码- 127 = 10000010- 01111111=
00000011=(3)10
③ 包括隐藏位 1的尾数 1.M= 1.011 0110 0000 0000 0000 0000
= 1.011011
=+ (1.011011)× 23 =+ 1011.011 = (11.375)10
2009年 7月 27日 8时 35分
[例 2] 将十进制数数 20.59375转换成位浮点数的二进制格式来存储。
[解,]
① 首先分别将整数和分数部分转换成二进制数:
20.59375= 10100.10011
② 然后移动小数点,使其在第 1,2位之间
10100.10011= 1.010010011× 2 4 e= 4
S= 0 E= 4 + 127 = 131 M= 010010011
③ 最后得到 32位浮点数的二进制存储格式为:
0100 0001 1010 0100 1100 0000 0000 0000
= (41A4C000)16
2009年 7月 27日 8时 35分练习:
1、将 20.1875转换成,32位浮点数存储?
2、若浮点数的二进制存储格式为( 41A18000) 16,
求其十进制值?
作业:
将十进制数数 17.296875转换成位浮点数的二进制格式来存储?
2009年 7月 27日 8时 35分数值数据 — 定点数的表示方法
原码表示法
补码表示法
反码表示法
移码表示法
2009年 7月 27日 8时 35分数值数据 —定点数的表示法(原码)
定点小数表示,Ns,N1 N2 … Nn
定义,[ X ] 原 =
定点整数表示,Ns N1 N2 … Nn
定义,[ X ] 原 =
X
1 - X
0 ≤X < 1
-1 < X ≤ 0
X
2n - X
0 ≤ X < 2n
- 2n < X ≤ 0
2009年 7月 27日 8时 35分数值数据 —定点数的表示法(原码)
实例,X1 = 0.10110 -0.10110 0.0000
[ X ] 原 = 0.10110 1.10110 0.0000
1.0000
实例,X1 = 10110 -10110 0000
[ X ] 原 = 010110 110110 00000
10000
2009年 7月 27日 8时 35分数值数据 — 定点数的表示法(原码)
性质,
原码 为符号位加数的绝对值,0正 1负
原码 零有两个编码,+0和 -0编码不同
原码 难以用于加减运算
N+1位二进制原码所表示的范围:
小数,MAX=1-2-n,MIN=﹣ (1-2-n )
整数,MAX=2n-1,MIN=﹣ (2n-1 )
2009年 7月 27日 8时 35分数值数据 —定点数的表示法(补码)
补码是在“模”和“同余”的概念下导出的。
,模”是指一个计量系统的计量范围,即产生“溢出”的量。
2009年 7月 27日 8时 35分数值数据 —定点数的表示法(补码)
现在是北京时间 3点整,而时钟却指向 5点。
5-2=3 5+10=3( 12自动丢失。 12就是模)
2009年 7月 27日 8时 35分数值数据 —定点数的表示法(补码)
继续推导:
5-2=5+10( MOD 12)
5+( -2) =5+10( MOD 12)
-2=10( MOD 12)
结论:
可以说:在模为 12的情况下,-2的补码就是 10。
一个负数用其补码代替,同样可以得到正确的运算结果。
2009年 7月 27日 8时 35分数值数据 —定点数的表示法(补码)
进一步结论:
在计算机中,机器能表示的数据位数是一定的,其运算都是有模运算。如果是 n位整数,其模为 2n。如果是 n位小数,其模为 2。
若运算结果超出了计算机所能表示的数值范围,则只保留它的小于模的低 n位的数值,超过
n位的高位部分就自动舍弃了。
2009年 7月 27日 8时 35分数值数据 —定点数的表示法(补码)
定义:
任意一个 X的补码为 [X]补,可以用该数加上其模 M来表示。
[X]补 =X+M
2009年 7月 27日 8时 35分数值数据 —定点数的表示法(补码)
定点小数表示,Ns,N1 N2 … Nn
定义,[ X ] 补 = ( MOD 2)
定点整数表示,Ns N1 N2 … Nn
定义,[ X ] 补 =
X
2+ X
0 ≤ X < 1
-1 ≤ X < 0
X
2n+1 + X
0 ≤ X < 2n
- 2n ≤ X < 0
( MOD 2n+1)
2009年 7月 27日 8时 35分数值数据 —定点数的表示法(补码)
实例,X1 = 0.10110 -0.10110 0.0000
[ X ] 补 = 0.10110 1.01010 0.0000
实例,X1 = 10110 -10110 0000
[ X ] 补 = 010110 101010 00000
2009年 7月 27日 8时 35分数值数据 —定点数的表示法(补码)
由于正数的补码就是正数本身,故着重讲解 负数求补码 的方法。
负数求补码
2009年 7月 27日 8时 35分数值数据 —定点数的表示法(补码)
( 1)由定义求例:X=-0.1101001
[ X]补 =2+X
=10+(-0.1101001)
=1.0010111
2009年 7月 27日 8时 35分数值数据 —定点数的表示法(补码)
例,X=- 1101001
解,
[X]补 =28+X
=100000000+(-1101001)
=10010111
反过来,由补码求真值,只要将公式进行交换即可 。
2009年 7月 27日 8时 35分数值数据 —定点数的表示法(补码)
( 2)由原码求补码除符号位以外,其余各位求反,末位加 1。
例,X= - 0.0101011
解,[X]
原 = 1 0 1 0 1 0 1 1
[X]补 = 1 1 1 10 0 0 0
+ 1
1 1 0 1 0 1 0 1
由补码求原码,此规则同样适用 。
2009年 7月 27日 8时 35分
由原码求补码的简便原则,
除符号位以外,从最低位开始遇到的第一个 1以前的各位保持不变,其余各位按位取反。
例,[X]原 = 1 1 0 1 1 0 1 0 0
[X]补 = 1 0 1 0 0 1
0
1 0 0
2009年 7月 27日 8时 35分由 [-X]补求 [X]补,
此规则同样适用 。
数值数据 —定点数的表示法(补码)
( 3)由 [X]补 求 [-X]补,连符号位一起各位求反,末位加 1。
例,[X]补 =1.1010101
解,[X]
补 = 1 1 0 1 0 1 0 1
[-X]补 =0 0 0 01 1 1 0
+ 1
0 0 1 0 1 0 1 1
[x]补 - >[x]原 - >[-x]原 - >[-x]补
2009年 7月 27日 8时 35分数值数据 —定点数的表示法(补码)
(4) 由 [X]补 求 [X/2]补,将 [X]补 的符号位和数值位一起向右移动一次。符号位移走后保持原来的值不变。
例,[X]补 = 1 00 1 1 0 0 0
[X/2]补 = 1 0 1 0 1 0 0 01
这称为,算术移位,
你会求 [X/4]
补 和 [X/8]补 吗?
2009年 7月 27日 8时 35分数值数据 —定点数的表示法(补码)
( 5)由 [x]补 求 [x]原
方法 1(逆运算),若 [x]补 <0,[x]补 末位减 1,
符号位不变,其他位按位取反;若 [x]补 >0,则
[x]补 = [x]原
方法 2,[x]原 =[[x]补 ]补
2009年 7月 27日 8时 35分数值数据 —定点数的表示法(补码)
性质,
0的补码是唯一的
补码便于加减运算
n+1位补码所能表示的数:
小数,MAX=1-2-n,MIN=﹣ 1
整数,MAX= 2n-1,MIN=﹣ 2n
2009年 7月 27日 8时 35分数值数据 —定点数的表示法(反码)
定点小数表示,Ns,N1 N2 … Nn
定义,[ X ] 反 =
定点整数表示,Ns N1 N2 … Nn
定义,[ X ] 反 =
X
( 2-2-n ) + X
0 ≤ X < 1
-1 < X ≤ 0
X
( 2n+1 –1) + X
0 ≤ X < 2n
- 2n < X ≤ 0
2009年 7月 27日 8时 35分数值数据 —定点数的表示法(反码)
由原码求反码,如果 X为正数,则 [X]反 =[X]原 ;如果 X为负数,则将 [X]原 除符号位以外,每位都变反,
可得到 [X]反 。
实例,X = +0.10110 -0.10110 +0.0000
[ X ] 反 = 0.10110 1.01001 0.0000
[ -0.0000]反 11111
实例,X1 = +10110 -10110 +0000
[ X ]反 = 0 10110 101001 00000
[ -0000]反 11111
对于反码有
[+0]和 [-0]之分
2009年 7月 27日 8时 35分定点数(移码)的表示法
对于 n+1位数 Ns N1 N2 … Nn
定义,[ X ] 移 =2n+X
由于移码是在原值 X上加一个 2n,所以也称为增码,因此,符号为 1时,表示正数,
符号为 0时,表示负数 。
X=+1101010,[X]移 =27+X
=1,1101010
-2n ≤ X < 2n
2009年 7月 27日 8时 35分数值数据 —定点数的表示法(移码)
由 [X]补 求 [X]移,只要将 [X]补 的符号位求反,就可得到 [X]移 。
性质:
若 [X1]移 > [X2]移,则有 X1> X2.
2009年 7月 27日 8时 35分
X
[X]移
124
1111100
9
0001001
2
0000010
0
0000000
-2
-0000010
-9
-0001001
-124
-
111110
0
27+X
128
252
11111100
137
10001001
130
10000010
128
10000000
126
01111110
119
01110111
4
000001
00
2009年 7月 27日 8时 35分
[例 3]以定点整数为例,用数轴形式说明原码、反码、补码表示范围和可能的数码组合情况。
[解,]
思考:为什么补码表示负数时,范围可到 -2n?
2009年 7月 27日 8时 35分设 n=8则,
① 原码:
正数,
0000 0000
( +0)
0111 1111
( +127)
共 128个负数,
1000 0000
( -0)
1111 1111
( -127)
共 128个共 256个
∵ 一个字节 8位 (即 n=8) ∴ 共能表示 256个数即,-127~127
2009年 7月 27日 8时 35分
② 反 码:
正数,
0000 0000
( +0)
0111 1111
( +127)
共 128个负数,
1111 1111
( -0)
1000 0000
( -127)
共 128个共 256个
∵ 一个字节 8位 (即 n=8) ∴ 共能表示 256个数即,-127~127
2009年 7月 27日 8时 35分
③ 补 码:
正数,
0000 0000
( +0)
0111 1111
( +127)
共 128个负数,
1111 1111
( -1)
1000 0001
( -127)
共 127个共 255个
∵ 一个字节 8位 (即 n=8),共能表示 256个数
∴ 多出 1000 0000表示 -128 [-128]补 = 1000 0000
1111 1111
+ 1
1000 0000
2009年 7月 27日 8时 35分
[例 4]将十进制真值 (- 127,- 1,0,+ 1,+ 127)列表表示成二进制数及原码、反码、补码、移码值。
[解,]
2009年 7月 27日 8时 35分原码、补码、反码和移码的区别,可分三个区域:
① 零区:
a,[X]原,[X]反 有 +0,-0之分
b,[X]补 +0=-0=0
c,[X]移 [0]移 =1000 0000
② 正数:
a,[X]原 = [X]反 = [X]补
b,[X]移 从 1~127
Ⅰ,数值,000 0001~111 1111与原反补相同
Ⅱ,符号:(始终) =1,与原反补相反
2009年 7月 27日 8时 35分
③ 负数:
a、原、反、补各不相同
b,[X]移,数值位与 [X]补 相同,符号位与 [X]补 相反均为 0
c,[X]反,[X]原 按位求反 [X]补 =[X]反 +1
2009年 7月 27日 8时 35分例题
例 5、设机器字长 16位,定点表示,尾数
15位,数符 1位,问:
( 1)定点原码整数表示时,最大正数是多少?最小负数是多少?
( 2)定点原码小数表示时,最大正数是多少?最小负数是多少?
例 6,P27
2009年 7月 27日 8时 35分例题例 7,把十进制 (+128.75)10× 2(-10)2写成浮点表示的机器数,阶码、尾数分别用原码、
补码表示。设阶码 4位,阶符 1位,尾数
15位(不含符号位),数符 1位。
2009年 7月 27日 8时 35分三、十进制数串的表示方法
目前,大多数通用性较强的计算机都能直接处理十进制形式表示的数据。十进制数串在计算机内主要有两种表示形式:
1.字符串形式
字符串形式,一个字节存放一个十进制的数位或符号位。为了指明这样一个数,需要给出该数在主存中的起始地址和位数 (串的长度 )。
2.压缩的十进制数串形式
2009年 7月 27日 8时 35分二 — 十进制有权码 —— 8421BCD码思考 1:机器中十进制数是否能直接运算?
十进制数用二进制编码思考 2,0,1,2… 9
(共 10个状态),
需几个二进制位?
8 4 2 1
23 22 21 20
2009年 7月 27日 8时 35分
常用 BCD码作为二 —>十转换的中间过渡,
当 BCD码送入计算机中,在通过标准子程序将其转换成纯二进制数。
由于 23=8,24=16,而十进制由 10种状态,
当用二进制表示时,应该用 4位。
从每个二进制位是否有确定的位权区分,
可把二 —>十进制编码分为有权码和无权码两种。
2009年 7月 27日 8时 35分十进制数 8421码 余 3码
0 0000 0011
1 0001 0100
2 0010 0101
3 0011 0110
4 0100 0111
5 0101 1000
6 0110 1001
7 0111 1010
8 1000 1011
9 1001 1100
用二进制编码表示的十进制数各位代码不存在权,代码的值是在 8421的基础上,每个代码加 3形成的。
这样做,两个采用余 3码的十进制数相加时,
能正确产生进位号。
2009年 7月 27日 8时 35分例 1:求( 47) 10+( 32) 10=
解:
( 47) BCD = 0100 0111
+( 32) BCD = 0011 0010
1001011179
( 79) 10
2009年 7月 27日 8时 35分例 2:求( 5) 10+( 8) 10=
解,( 5) BCD = 0101
+ = 1000
1101
( 13) 10
( 8) BCD
0 9 A F 0~9
6+ 110
11001000
当和大于 9时,需加 6修正
2009年 7月 27日 8时 35分字符与字符串的表示方法
计算机中最重要的功能是处理信息,如:数值、
文字、符号、语言和图象等。计算机内部,各种信息都必须采用数字化编码的形式被传送、
存储、加工。因此掌握信息编码的概念与处理技术是至关重要的。
所谓编码,就是用少量简单的基本符号,选用一定的组合规则,以表示出大量复杂多样的信息。
2009年 7月 27日 8时 35分
常用的信息分为:
定点数数值信息浮点数字符非数值信息 汉字逻辑数据
2009年 7月 27日 8时 35分字符编码
用一定位数的二进制数,0”和,1”进行编码给出。
常用的字符编码 ASCII码。
ASCII ( American Standard Code for
Information Interchange)
2009年 7月 27日 8时 35分字符编码
ASCII码是美国信息交换标准代码。
(American Standard Code for
Information Interchange)
包括 0-9十个数字,大小写英文字母及专用符号等 95种可打印字符。
Computer
01000011 01101111 01101101
01110000 01110101 01110100
01100101 01110010
7 6 5 4 3 2 1
2009年 7月 27日 8时 35分中文编码
汉字输入码:为进行汉字输入,将汉字代码化。
汉字机内码:在计算机内部进行汉字处理。
汉字字型码:汉字输出时的编码。
2009年 7月 27日 8时 35分显示输出 打印输出机内码向字形码转换机内码输入码向机内码转换中文编码字符代码化(输入)
数字码拼音码字形码
2009年 7月 27日 8时 35分中文编码精密型 48?48 288
提高型 32?32 128
普及型 24?24 72
简易型 16?16 32
汉字点阵类型 点阵 占用字节数
2009年 7月 27日 8时 35分逻辑数据逻辑型数据只有两个值,真 和 假,
正好可以用二进制码的两个符号分别表示,
例如 1 表示 真则 0 表示 假不必使用另外的编码规则。
对逻辑型数据可以执行逻辑的 与 或 非 等基本逻辑运算。其规则如下
2009年 7月 27日 8时 35分逻辑数据
X Y X与 Y X或 Y X异或 Y
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0
2009年 7月 27日 8时 35分三、校验码为了提高计算机的 可靠性,除了采取选用更高可靠性的器件,更好的生产工艺等措施之外,还可以从数据编码上想一些办法,即采用一点冗余的线路,在原有数据位之外再 增加一到几位校验位,使新得到的码字带上某种特性,
之后则通过 检查该码字是否仍保持有这一特性,
来 发现 是否出现了错误,甚至于定位错误后,
自动改正 这一错误,这就是我们这里说的 检错纠错编码技术 。
2009年 7月 27日 8时 35分校验码三种常用的检错纠错码:
奇偶检错码 用于 并行 数据传送中海明检错与纠错码 用于 并行 数据传送中循环冗余码 用于 串行 数据传送中编码过程 译码过程传送原始数据 码 字 结果数据形成校验位的值,
加进特征检查接送的码字,
发现 / 改正错误
2009年 7月 27日 8时 35分奇偶校验码
奇偶校验码:用于并行码 检错原理:在 k 位数据码之外增加 1 位校验位,
使 K+1 位码字中取值为 1 的位数 总保持 为 偶数 ( 偶校验 )或 奇数 ( 奇校验 )。
例如,偶校验 奇校验校验位
0 0 0 1 0 0 0 1
0 1 0 1 0 1 0 10 1 0 1
0 0 0 1 1 0
0 1
原有数字位 两个新的码字
2009年 7月 27日 8时 35分字 校验位校验码例 1,数据
0010 0001
0111 0101
奇校验码
0010 0001 1
偶校验码
0010 0001 0
0111 0101 0 0111 0101 1
例 2:数据,0111 0101
奇校验码
0111 0101 0
发送端 (门电路)
0110 0101 0
接收端出错
2009年 7月 27日 8时 35分例 3:数据,0111 0101
奇校验码
0111 0101 0
发送端 (门电路)
0110 0111 0
接收端正确奇偶校验只能发现奇数个错误,且不能纠正错误!