内容提要:
1、二进制数
2、数制之间的转换
3、二进制数在计算机中的表示
4、数的原码、反码、补码表示
5、定点数的四则运算
6、其它基本数据表示 ——二进制编码
7、数据校验码
8、浮点数的编码及运算
第二章 二进制数及其在计算机中
的表示与运算
要求:
1、掌握二进制数的概念。
2、掌握各种数制之间的相互转换。
3、掌握二进制数在计算机中的表示
4、掌握二进制数的原码、反码、补码表示。
5、掌握定点数的四则运算
6、掌握二进制编码的概念,BCD,ASCII与汉字的
编码。
7、掌握数据校验码的概念;掌握奇偶校验码。
8、了解浮点数的编码及运算
一、十进制数
253.48=2× 102+ 5× 101+ 3× 100+ 4× 10-1+ 8× 10-2
2.1 二进制数
位置不同,贡献不同! 权重不同!
十进制数的三个特征:
1、由 0,1,2,3,4,5,6,7,8,9共 10个基本数字符号
(基数)来表示数据。
2、计数时满十向高位进一(逢十进一)。
3、相同数符,位置不同,其权值不同。
二、二进制数
假设仅仅用 0,1两个数字符号来进行计数,
若采用位置计数法,如何对下列数据进行
计数:
2.1 二进制数
0
1
2
3
4
5
6
7
8
9
0
1
100
10
11
101
110
1001
111
1000
分析:
由 0开始计数时,每次增 1;当当前数为
1时,若再增 1:
1+1=?
答案 1,1+1=2
答案 2,1+1=10
(10)2
可以总结如下要点:
1,由 0,1两个数符进行计数时,数值中
不可能出现其它符号,只能是 0和 1;
2,为了使计数能够继续进行,必须往高
位产生进位。即:
“逢二进一,
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
10000
10001
10010
10011
10100
10101
类似地二进制各位的权值如下:
例:
1110=1× 23+ 1× 22+ 1× 21+ 0× 20
=8+ 4+ 2+ 0
=( 14) 10
X X X X X, X X
202122232
4
2-1 2-2
253.48=2× 102+ 5× 101+ 3× 100+ 4× 10-1+ 8× 10-2
=16+ 8+ 0+ 2+ 0+ 0.5+ 0.0+ 0.125
=26.625
例:
11010.101=? 2
-1 2-3
下面咱们来定义一种三进制数:
1、它由 0,1,2这三个基数组成;
2、它逢 3进 1;
例:下列三进制数:
(102.2)3=1× 32+ 0× 31+ 2× 30+ 2× 3-1
八进制数:
1、它由 0,1,2,3,4,5,6,7这八个基数
组成;
2、它逢 8进 1;
例,下列八进制数:
(706.2)8=7× 82+ 0× 81+ 6× 80+ 2× 8-1
十六进制数:
1、它由 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
这 16个基数组成;
2、它逢 16进 1;
例,如十六进制数 (0A2C)是个什么概念呢?
(0A2C) 16=0× 163+ A× 162+ 2× 161+ C× 160
=0× 163+ 10× 162+ 2× 161+ 12× 160
=0+ 2560+ 32+ 12=2604
三、二进制数的四则运算
1、加法
2.1 二进制数
1 1 0 1
+ 1 1 0 1
1 0 0 1.1 1
+ 1 1 0 1.1 0
1 1 0 1 0 1 0 1 1 1.0 1
逢 2进 1
2、减法
- 1 1 0 1 - 1 0 0 1.1 1
1 1 0 1 0 1 1 1 1 1.0 1
借 1当 2
1 1 0 1 1 0 1 0 1.1 0
0 1 0 0 1.1 1
- 1 1 1 1 1.0 1
- 0 1 0 0 1.1 1
1 1 1 1 1.0 1
1 0 1 0 1.1 0-
78-89 =- (89-78)
- 1 0 1 0 1.1 0
3、乘法
× 1 1 0 1 × 1 0 0 1.1 1
1 0 1 0 1 1 1 1 1.0 1
答案,100110000.1011
1 0 1 0
1 0 1 0
0 0 0 0
1 0 1 0
1 0 0 0 0 0 1 0
4、除法
1 1 1 0 1 0 11 0 0 1
1 0 0 1
1 0 1 11 0 0 1
1 0 0
1 0 0 1
0
1 1 0 1
1
1 1 1 0 1 0 11 0 1
练习:
答案:
商为,10111 余数为,10
四、计算机中为什么要用二进制数
1,二进制数表示数字容易在机器上实现,因为物质
世界中二稳态的电子元件容易制造并且工作可靠
(物质原因);
2,二进制运算规则简单;
3,可采用逻辑代数作设计分析的工具(理论原因);
4,节约存储空间。
2.1 二进制数
一、二进制数 ====> 十进制数
1、整数转换
2.2 数制之间的转换
例:
(1110)2=1× 23+ 1× 22+ 1× 21+ 0× 20
=8+ 4+ 2+ 0
=(14)10
2、小数转换
例,(0.1110)2=?
=1× 2-1+ 1× 2-2+ 1× 2-3+ 0× 2-4
=0.5+ 0.25+ 0.125+ 0
=(0.875)10
二、十进制数 ====> 二 进制数
2.2 数制之间的转换
例,(14)10
=1× 23+ 1× 22+ 1× 21+ 0× 20
=8 + 4 + 2 + 0
=(1110)2
例,(114)10
… +□ × 23+□ × 22+□ × 21+□ × 20
=(1 1 1 0 0 1 0 )2
27=128 26=64
25=32 24=16
□× 26+ 25+ 24+□ × 23+□ × 22+ □ × 21+□ × 20
26+ 25+ 24+ 21
(64+32+16+2)
十进制数 ====> 二 进制数规则:
“整数部分 用除 2取余!,
Why
例,(114)10=?
1× 26+ 1× 25+ 1× 24+ 0× 23+ 0× 22+ 1× 21+ 0× 20
1× 25+ 1× 24+ 1× 23+ 0× 22+ 0× 21
1× 24+ 1× 23+ 1× 22+ 0× 21
1× 23+ 1× 22+ 1× 21
1× 22+ 1× 21
1× 21
1× 26+ 1× 25+ 1× 24+ 0× 23+ 0× 22+ 1× 21
114
57
28
14
7
3
1
0
0
1
0
0
1
1
1
高位(1110010)2
“小数部分 用乘 2取整!,
十进制数 ====> 二 进制数规则二:
Why
=1× 2-1+ 0× 2-2+ 1× 2-3
=0.5+ 0.0+ 0.125
例,(0.625)10 = (X.XX… X)2
(0.625)10
1、将下列十进制数转换成二进制形式。
( 1) 7
( 2) 65
( 3) 1023
( 4) 1/8
( 5) 36.125
练习:
三、二进制数 <====> 其它 进制数
采用二进制计数的缺点:书写时位数太
多,容易出错,且不易读。如 16位二进制数
( 1010111100011010) 2
2.2 数制之间的转换
1、转换成八进制形式
2、转换成十六进制形式
解决的办法是:
二进制 八进制
000 — 0
001 — 1
010 — 2
011 — 3
100 — 4
101 — 5
110 — 6
111 — 7
解决办法之一,转换成八进制形式。
二进制:( 001 010 111 100 011 010) 2
例:将二进制 001010111100011010写成八进制形式。
( 1 2 7 4 3 2) 8
八进制:( 127432) 8
000—0
001—1
010—2
011—3
100—4
101—5
110—6
111—7
练习:
1、将二进制数 110101001011转换成八进制形式。
2、将二进制数 1101010.01011转换成八进制形式。
(2)650.23
152.23
152.26
(1)6513
110 101 0, 010 11
1 101 010, 010 11
001 101 010, 010 110
000—0 001—1
010—2 011—3
100—4 101—5
110—6 111—7
注意,二进制 ===>八进制时:
1) 整数部分由低位向高位的方向三位一组
进行,当高位不足三位时在前加 0补足。
2) 小数部分由高位向低位开始分组,最后
不足三位时,加 0补足。
001 101 010, 010 11
1101010, 01011
001 101 010, 010 110
152.26
解决办法之二,转换成十六进制形式。
二进制 十六进制 二进制 十六进制
0000 — 0 1000 — 8
0001 — 1 1001 — 9
0010 — 2 1010 — A
0011 — 3 1011 — B
0100 — 4 1100 — C
0101 — 5 1101 — D
0110 — 6 1110 — E
0111 — 7 1111 — F
同理,二进制 ===>十六进制时:
1) 整数部分由低位向高位的方向四位一组
进行,当高位不足四位时在前加 0补足。
2) 小数部分由高位向低位开始分组,最后
不足四位时,加 0补足。
0110 1010, 01011
1101010, 01011 6A.58
0110 1010, 0101 1000
1、将下列二进制数转换成十六进制形式。
( 1) 110010111.1001011
( 2) 1010100011.0011101
( 3) 100001011.11001
2、将下列各数转换成二进制形式。
( 1) (650.351)8
( 2) (650.351)16
( 3) (0ABF.DC)16
四、计算机中,位” 与,字节” 的概念
1、位:比特( bit = binary digit)
2.2 数制之间的转换
1 0 0 1 1 0 0 0
1 0
2、字节,Byte
1 0 0 1 1 0 0 0
1 0
3、字,Word
4,bit,Byte,Word之间的关系
1 Byte = 8 bit
1 Word = 2 Byte
5、常用的存储器容量单位有,Byte,KB、
MB,GB等。
它们的关系是:
1 KB (Kilo-Byte) = 210 Byte
1 MB (Mega-Byte) = 210 KB
1 GB (Giga-Byte) = 210 MB
思考题:
1 GB =? Byte
一、定点数与浮点数
1、什么是阶码、阶符、数码、数符?
2.3 二进制数在计算机中的表示
123.456 = 10+3× 0.123456
N = 10± j× (± S)
2、定点数与定点计算机
3、浮点数与浮点计算机
N = 2± j× (± S)
J恒定,如 j = 0
J可变:
二、定点数与浮点数在计算机中的格式
1、定点小数的表示格式
2.3 二进制数在计算机中的表示
符号 ·数值
小数点位置,但机器中不存在
0 0 1 0 1 1 0 0 + 0.01011
1 0 1 0 1 1 0 0 - 0.01011
2、(定点)整数的表示格式
符号 数值 ·
小数点位置,但机器中不存在
0 0 1 0 1 1 0 0
1 0 1 0 1 1 0 0
+
—
2、浮点数的表示格式
阶符 阶码 数符 · 尾数
0 0101110 1 0101100
=?
- 0.01011× 2-0101110
1、已知一机器数 0111001,试写出它所表示
的实际内容 (十进制形式的值)。
(1)作为一个定点整数时;
(2)作为定点小数时;
(3)作为浮点数时,其中数符、阶符各一
位,阶码2位,尾数4位;
练习:
三、计算机中二进制数的表数范围
1、定点小数
2.3 二进制数在计算机中的表示
1 1 1 1 1 1 1 10
1 1 1 1 1 1 1 11
最大值:
最小值:
设定点计算机的字长为 9位,其中 8个数值位,1个
符号位,则该计算机的表数范围是多大?
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 1
正最大值(负最小值):
正最小值(负最大值):
0/1
0/1
绝对值范围 (不含 0):
0.00000001~ 0.11111111
2-8~ 1-2-8
2、整数
设定点计算机的字长为 N+1位,其中 N个数值位,1个
符号位,则该计算机表示的的范围是多少?
1 1 … 1 1 1 ·0
N个 bit
小数点位置|M|≤2 N-1
一、带符号整数
1111
+1
10000 = 24
1 1 … 1 1 1 ·1
N+1个 bit
小数点位置
0≤M≤2 N+1-1
二、无符号整数
1 1 1 1 1 1 1 1 ·
8个 bit
小数点位置
例:如果用 8位表示一个整数。则
( 1) 带符号数表数范围为,|M| ≤2 7-1=127
( 2)无符号数表数范围为,0 ≤ M ≤2 8-1=255
若一台浮点计算机,尾数 8位,阶码
3位,另各有一位符号位,则所能表示的
数(绝对值)的范围是;
最小值,1111010000000 即 2-7× 2-1
最大值,0111011111111 即 27× 1-2-8
3、浮点数
若一台浮点计算机,尾数 n位,阶码
m位,另各有一位符号位。
阶符 阶码 m位 数符 · 尾数 n位
0/1 1…1 0 11…11
± (2m-1) 最大尾数,(1-2-n)最小尾数,2-1
则所能表示的数(绝对值)的范围是:
2 × 2-1~ 2 × (1-2-n)- (2m-1) + (2m-1)
一、原码
原码是一种机器数,原码表示法就是在机器
中用符号位 0,1表示数的正号和负号,而其
余位表示数本身。
2.4 数的原码、补码、反码
例:
若 X的 真值 为 (0.101)2则 原码 为,[X]原 =0.101
若 X的 真值 为- (0.101)2则 原码 为,[X]原 =1.101
练习:
若 [X]原 =1.10010,[Y]原 =0.01111,求 [X+Y]原?
答案,-0.00011(真值)
1.00011(原码)
1.10010 1.01101 1.01110
+ 0.01111
1.111011.000101.00011
原码表示法简单,转换成真值比较方便。
但是,计算机用原码做减法时,运算比较复杂:
1、判断符号;
2、比较两数绝对值;
3、用绝对值大的数减绝对值小的数;
4、以绝对值大的数的符号位作为结果的
符号位。
二、反码
1、求下列各数的原码、反码:
2.4 数的原码、补码、反码
-1011
1011
100101011
-1011.1101
正数的反码是其本身;负数的反码是:符号位
不变,数值位按位取反。
三、补码
2.4 数的原码、补码、反码
-3 = +9
这里加 9与减 3是等价的。
我们称 +9是 -3对 12的 补码 。 12是钟
表这类计数系统的 模 。
或者说,在 12进制计数中,-3的补
码是 9。 7-3=7+9
4=16
4=16-12
4=16 mod 12
即,4与 16是 同余 的
二进制数的补码:
[0]补 =?
[1]补 =?
[-1]补 =?
[0]补 =0 mod 2 = 0
[1]补 =1 mod 2 =1
[-1]补 = -1+2 mod 2 = 1
二进制数的补码:
[110]补 =?
[101]补 =?
[-110]补 =?
[-110]补 = -6 mod 8 = 8-6 mod 8 = 2 = 10
[-101]补 = -5 mod 8 = 8-5 mod 8 = 3 = 11
[-101]补 =?
1、正数的补码是它本身。
2、负数的补码求法如下:
( 1) 求原码
( 2) 求反码
( 3) 末位加 1
[-110]补 =[1110]原 =[1001]反 =[1010]补
[-101]补 =[1101]原 =[1010]反 =[1011]补
在二进制计数中,求 -1011的补码?
1111
- 1011
0100
+1
10101
取反 加 1
10000
- 1011
0101
-1011 11011 10100 10101
真值 原码 反码 补码
练习:
1、求 X=0.5 与 X=-0.5的原码、反码、补码。
提示:先将 X变成二进制形式 。
练习:
2、求下列各数的原码、反码、补码。
-0.1010
15/128
-11/128
-65
-253
练习:
3,(1)已知 [X]补 =0.1101,求 X。
(2)已知 [X]补 =1.1101,求 X。
答案:
(1)正数的补、原、反是其本身:即 X=[X]补 =0.1101
(2)由 [X]补 =1.1101
有,[X]反 =1.1100 则,[X]原 =1.0011
所以,X=-0.0011
问,在十进制计数中,-9的补码是多少? -5的
补码呢?
例,在十进制计数中,求,-789补码? 123的
补码?
答案,1,5
-789
1000
1000-789=( 999-789) +1
=210+1=211
123
补充材料
方法二:在十进制计数中,-789的补码是多少?
999
-789
210
+1
211
相当于取反
加 1
1000
-789
211
例,在十进制计数中,求 123-789的值?
123789
1000 1000-789=( 999-789) +1
=210+1=211
211+123 = 334
1000-334=( 999-334) +1
=665+1=666
一、定点补码的加、减法
采用补码,可用加法完成减法运算。
2.5 定点数的四则运算
补码加法公式是:
[X]补 +[Y]补 =[X+Y]补
上式成立的条件是,|X|< 1,|Y|< 1,|X+Y|< 1
验证:
( 1)当 X,Y均为正值时,显然成立。
( 2)、当 X> 0,Y< 0时可能有两种情况:
X+Y>0和 X+Y<0。
情况一,X+Y>0
X=0.1110
Y=-0.0101
[X]补 =0.1110
[Y]补 =1.1011
[X]补 + [Y]补 =10.1001
溢出位,计算机自动丢失。
X+ Y = 0.1110
-0.0101
0.1001 即,[X+ Y]补 =0.1001
情况二,X+Y<0
X=0.0101
Y=-0.1110
[X]补 =0.0101
[Y]补 =1.0010
[X]补 + [Y]补 =1.0111
X+Y=0.0101-0.1110
=-( 0.1110- 0.0101)
即,[X+ Y]补 =1.0111
0.1110
- 0.0101
0.1001=-0.1001
X=-0.1010
Y=-0.0100
[X]补 =1.0110
[Y]补 =1.1100
[X]补 + [Y]补 =11.0010
溢出位,计算机自动丢失。
X+ Y =-0.1010
-0.0100
-0.1110 即,[X+ Y]补 =1.0010
( 3)、当 X< 0,Y< 0时。
由( 1)、( 2)、( 3)可知结论成立,即:任意
两数的补码之和等于两数之和的补码。
练习:
[X]补 = 0.1110
[Y]补 = 0.0101
[X]补 + [Y]补 = 1.0011
X+ Y =0.1110
0.0101
1.0011
[X+ Y]补 =?
( 1)已知,X=0.1110,Y=0.0100,分别
求 [X]补 + [Y]补 和 [X+ Y]补 。
X=0.1110
Y=0.0101
两正数相加结
果为负?
练习:
[X]补 = 1.0010
[Y]补 = 1.1011
[X]补 + [Y]补 =10.1101
X+ Y =-0.1110
-0.0101
-1.0011
( 2)已知,X=-0.1110,Y=-0.0100,
分别求 [X]补 + [Y]补 和 [X+ Y]补 。
X=-0.1110
Y=-0.0101
溢出位,计算机自动丢失。
两负数相加变成正数。为
什么?
[X+ Y]补 怎么
求?
二、运算溢出与变形补码
变形补码 主要用来判断 运算溢出 情况。变
形补码又称模 4补码,即它用两个二进制
位表示数的符号。
2.5 定点数的四则运算
例:
X=+0.1011 则 [X]补 =00.1011
X=-0.1011 则 [X]补 =11.1011
即在原来模 2补码表示的符号位
之前再加上一位相同的符号位。
[X]补 = 00.1110
[Y]补 = 00.0101
[X]补 + [Y]补 = 01.0011
例 1 已知,X=0.1110,Y=0.0100,分别
求 [X]补 + [Y]补 和 [X+ Y]补 。
X=0.1110
Y=0.0101
两正数相加
果为负 ---上溢
即:结果 ≥ 1时
[X]补 =11.0010
[Y]补 =11.1011
[X]补 + [Y]补 =110.1101
例 2 已知,X=-0.1110,Y=-0.0100,
分别求 [X]补 + [Y]补 和 [X+ Y]补 。
X=-0.1110
Y=-0.0101
溢出位,计算机自动丢失。
两负数相加变成正数。 下溢
即:结果 ≤ -1时。
变形补码判定溢出情况
00 结果正常 0< X+Y <1
11 结果正常 -1< X+Y <0
01 上溢 X+Y>1
10 下溢 X+Y<-1
The result is Correct?
三、定点乘法
0,1 1 0 1
× 0,1 1 0 1
2.5 定点数的四则运算
1 1 0 1
0 0 0 0
1 1 0 1
1 1 0 1
0.1 0 1 0 1 0 0 1
方法 1,人的
习惯方法!
0,1 1 0 1
× 0,1 1 0 1
0,0 0 0 0 1 1 0 1
0,1 0 1 0 1 0 0 1
方法 2,小数点位
置固定,将乘法分
解为 右移 操作!
0,0 0 0 0 0 0 0
0,0 0 1 1 0 1
0,0 1 1 0 1
4次右移
3次右移
2次右移
1次右移
0,0 0 0 0
0,1 1 0 1
计算机
做乘法
的方法。
将乘法
分解为
右移与
加法的
交替 操
作 !
0,0 1 1 0 1
+ 0,0 0 0 0
+ 0,1 1 0 1
第一次部分积
部分积右移一位
乘数为 0,加被乘数
0.1101× 0.1101
0,0 1 1 0 1
0,0 0 1 1 0 1
第二次部分积
部分积右移一位
乘数为 1,加被乘数
1,0 0 0 0 0 1
0,1 0 0 0 0 0 1
+ 0,1 1 0 1
第三次部分积
部分积右移一位
乘数为 1,加被乘数
1,0 1 0 1 0 0 1
0,1 0 1 0 1 0 0 1
+ 0,1 1 0 1
第四次部分积
部分积右移一位,为最终乘积
累加器清零
乘数为 1,加被乘数
定点乘法时,计算机对 结果符号位 的处理:
两正数相乘 0+0 = 0
一正一负相乘 1+0 = 1
两负数相乘 1+1 = 0
符号相加
练习,已知 X=0.1101,Y=1.0101,用计算
机做乘法的方法求 X× Y=?。
提示,( 1)注意符号位
( 2)要求写出详细步骤
两个要点,一是做加
法;二是部分积右移。
四、定点除法
乘法 除法
2.5 定点数的四则运算
除法是乘法的逆运算。
做加法 做减法
右移 左移
做减法 可用补码做加法来代替 !
除法流程:
X/Y 求 [-Y]补
余数
左移
加补码
…
左移
加补码
0.10101001
1.01010010
-0.1101
0.1101 0.10101001
1.01010010
+1.0010
0.1101
0,1 0 1 0 1 0 0 10,1101 1,0 1 0 1 0 0 1 0
0.
被除数左移一位
1.1101
(变负数 )
1.0011
(变补码 )
+1,0 0 1 1 0 0 0 0 加补码(做减法)
商清零
将除数变成补码形式
余数为正,则商为 10,1 0 0 0 0 0 1 0
被除数左移一位1,0 0 0 0 0 1 0 0
加补码(做减法)+1,0 0 1 1 0 0 0 0
1
0,0 0 1 1 0 1 0 0 余数为正,则商为 1
1
被除数左移一位0,0 1 1 0 1 0 0 0
加补码(做减法)+1,0 0 1 1 0 0 0 0
1,1 0 0 1 1 0 0 0 余数为负,说明不够减。则商为 0
加除数本身,恢复上一次多做的减法+0,1 1 0 1 0 0 0 0
0,0 1 1 0 1 0 0 0 余数被恢复
被除数左移一位
加补码(做减法)+1,0 0 1 1 0 0 0 0
0,1 1 0 1 0 0 0 0
0
0,0 0 0 0 0 0 0 0 余数为 0,则商为 1,结束除法过程
1
0,1 0 1 0 1 0 0 10,1101 1,0 1 0 1 0 0 1 0
0.
1.1101
(变负数 )
1.0011
(变补码 )
+1,0 0 1 1 0 0 0 0
0,1 0 0 0 0 0 1 01,0 0 0 0 0 1 0 0
+1,0 0 1 1 0 0 0 0
1
0,0 0 1 1 0 1 0 0
1
0,0 1 1 0 1 0 0 0+1,0 0 1 1 0 0 0 0
1,1 0 0 1 1 0 0 0
+0,1 1 0 1 0 0 0 0
0,0 1 1 0 1 0 0 0
+1,0 0 1 1 0 0 0 0
0,1 1 0 1 0 0 0 0
0
0,0 0 0 0 0 0 0 0
1 R1 R2 R3 R4
(R3+Y) × 2 -Y R4=
R4=2× R3+
Y
1,1 0 0 1 1 0 0 0
+0,1 1 0 1 0 0 0 0
0,0 0 0 0 0 0 0 0
1,0 0 1 1 0 0 0 0
如果余数为负,不必恢复
余数只要 继续 将余数 左移 一位,
再加上 除数 即可!
这种方法叫做 加减交替法,
相对地前者叫做 恢复余数法。
练习:
( 1)已知 X=0.1000001,Y=0.1010,求X/Y。
( 2)已知 X=0.1101,Y=0.0101,求X/Y。
注意的问题:
1、已知 X=0.1000001,Y=0.1010,求X/Y。
A、先求[-Y] 补,不要出错。
B、运算时,先左移,再加补。
B、余数为负时,注意恢复余数(加除数)。
2、已知 X=0.1101,Y=0.0101,求X/Y。
A,本题中,Y明显不是计算机定点数形式(小数
点后第一位应该为1,现为0),将它变为定点形
式,即:Y= 0.1010。
B,变换后,|X|≥|Y|,可知商 ≥ 1.0,但定点除法中
计算机无法表示大于 1的商数,所以可先将 X右移一位
,使得 |X|< |Y|,即 X=0.01101。
C,再按加减交替法或恢复余数进行运算,得到商 S和
余数 Q。
D,因上述除数 × 2,同时又将 Y/2,因此,正确的结果
应该是,S=S× 4,Q=Q× 2
y=2Y
x=X/2
X=0.1101,Y=0.0101
做 x/y=?
x=Sy+Q
X/2=S× 2Y+Q
X=4SY+2Q
X/Y的商为 4S,余数为 2Q
0.101/0.0 1 1 0 1 [-y]补 =1.011
+1.0 1 1
0.1 1 0 1
0.0 0 1 1
0.1 0 1 0 0
0.0 1 1+1.0 1 1
1.1 1 01.1 0
+0.1 0 1
0.0 0 1
+1.0 1 1 0.0 1
1.1 0 1 1.0 1
+0.1 0 1 1.1 1 1 -0.0 0 0 0 0 0 0 1
0.1 0 1 0 1× 0.1 0 1
0.1 0 1 0 1
0.0 1 0 1 0 1
0.0 0 0 0 0
0.1 0 1 0 1
0.0 1 0 1 0 10.0 0 1 0 1 0 1
0.1 1 0 1 0 0 10.0 1 1 0 1 0 0 1
0.0 1 1 0 1
X=4SY+2Q
0.1 0 1 0 0 -0.0 0 0 0 0 0 0 1
X=0.1101,Y=0.0101
1 0, 1 0 0 -0.0 0 0 0 0 0 1
真正的商 真正的余数
即,0.1101=10.1× 0.0101-0.0000001
计算机中可以用二进制形式表示无符
号数、带符号数定点、浮点数,也可以进
行四则运算。
由于采用了二进制形式,使四则运算
建立在加法的基础上,从而完成了数据的
数值计算机问题。
但计算机如何处理字符(如汉字,英
文)信息、如何进行逻辑判断、如何将我
们的熟悉的十进制数字进行识别与存储?
2.6 二进制编码
计算机
二进制
( 101010… )
人
汉字、英文
数字、图形
…
一,4位( bit)的 BCD编码
解决十进制数如何用二进制数来表示的问题。
2.6 二进制编码
BCD( Binary Coded Decimal)码,二进制编
码的十进制数。
1、四位有权码
十进制数 8421 BCD 5211 BCD
0 0000 0000
1 0001 0001
2 0010 0011
3 0011 0101
4 0100 0111
5 0101 1000
6 0110 1010
7 0111 1100
8 1000 1110
9 1001 1111
2、四位无权码
十进制数 余 3码 格雷码( 1) 格雷码( 2)
0 0011 0000 0000
1 0100 0001 0100
2 0101 0011 0110
3 0110 0010 0010
4 0111 0110 1010
5 1000 1110 1011
6 1001 1010 0011
7 1010 1000 0001
8 1011 1100 1001
9 1100 0100 1000
课堂练习:
( 731) 10=(?) BCD
( 1011.01) 2=(? )BCD
二,6位( bit)的 BCD编码
4位 BCD码只能表示 24=16种不同的符号,
如果要同时表示英文字符、数字、特殊符号
(如 #,$等)则无法表示完全。
2.6 二进制编码
区域位 后四位 表示的符号
00 XXXX 0-9及部分特殊符号
11 XXXX A-I及部分特殊符号
10 XXXX J-R及部分特殊符号
01 XXXX S-Z及部分特殊符号
三,ASCII码
ASCII( American Standard Code for
Information Interchange)。
2.6 二进制编码
1000001
A
1100001
a
0110001
1
1000010
B
1100011
c
0110000
0
低位
高位 0000 0001 0010 0011 …… 1100 1101 1110 1111
0000 NUL SOH STX ETX … FF CR SO SI
0001 DLE DC1 DC2 DC3 … FS GS RS US
0010 SP !, # …,-, /
0011 0 1 2 3 … < = >?
0100 @ A B C … L M N O
0101 P Q R S … \ ]
0110,a b c … l m n o
0111 p q r s … | } ~ DEL
ASCII码表
四,EBCDIC码
EBCDIC码是扩展的信息交换码的简称,
它由 8位组成,高 4位为区域比特,低 4位为
数字比特。主要用在 IBM等大型机中。凡区
域比特前二位为 00的,均不代表任何字符。
2.6 二进制编码
五、汉字的编码
在第十章专门讲述。
2.6 二进制编码
是否可用 8bit来为汉字进行编码?
数据校验码是一种具有发现某些错误或
具有自动纠错能力的数据编码方法。
它的实现原理是在合法的数码之间加进
一些附加的编码,当合法数据出现某些错误
时,成为非法编码。
2.7 数据校验码
一、奇偶校验码
2.7 数据校验码
数据 奇校验编码 偶校验编码
0000000 1 0000000 0 0000000
1010100 0 1010100 1 1010100
0111111 1 0111111 0 0111111
1111111 0 1111111 1 1111111
校验位
数据位
1、垂直奇偶校验
2、水平奇偶校验
0 1 0 1 1
0 0 0 0 1
1 1 0 1 0
1 1 1 0 0
校验位 0 0 1 1
二、海明校验码
2.7 数据校验码
2.7 数据校验码
一、编码方法
1、整数的编码方法
2.8 浮点数的编码及运算
[X]原 =X 0≤X < 2n
[X]原 =2n+ X -2n< X≤0
0 1 1 1 1 1 0 1
1 1 1 1 1 1 0 1
设,|X|=(1111101)2=(125)10
正数:
负数:
[X]反 =X 0≤X < 2n
[X]反 =2n+1-1+ X -2n< X≤0
1 1 1 1 1 1 1 1
1 1 1 1 1 0 1
1 0 0 0 0 0 1 0
-
设,|X|=(1111101)2=(125)10
真值:
原码,1 1 1 1 1 1 0 1
反码:
1 1 1 1 1 0 1-
2n+1-1
+ X
1 0 0 0 0 0 1 0
[X]补 =X 0≤X≤2 n
[X]补 =2n+1+ X -2n< X≤0
[X]补 =[X]反 + 1
0 0 0 0 0 0 0 0
1 1 1 1 1 0 1
1 0 0 0 0 0 1 1
1
-
2、浮点数的编码方法
阶符 阶码 数符 · 尾数
1 bit n bit 1 bit m bit
通常用 移码 表示。
将补码的符号位变反 ===> 移码
例:
X=+1011,[X]补 =01011,[X]移 =11011
X=-1011,[X]补 =10101,[X]移 =00101
二、浮点数的运算
1、浮点数加减法运算
2.8 浮点数的编码及运算
五个步骤:
1)对阶
2)尾数加减
3)规格化处理
4)舍入
5)检查阶码是否溢出
例:
已知,X=2010× 0.1101,Y=2100× (-0.1010),
求 X+ Y?
1)对阶
[X]补 = 00 010 00 1101
阶符 阶码 尾符 尾数
[Y]补 = 00 100 11 0111
(010-100)2 = 2-4 = -2,说明 X的阶码比 Y小
2个, 数量级,,因此应将 X的尾数右移 2位,使
X与 Y在同一个, 数量级, 上。 1101===>001101
2)尾数加减
[X]补 = 00 100 00 001101
阶符 阶码 尾符 尾数
[Y]补 = 00 100 11 0111
11 101001
3)规格化处理
附录:专业术语英汉对照
Decimal number 十进制数
Binary number 二进制数
Octal number 八进制数
Hexadecimal number 十六进制数
Base 基
Weight 权
Fixed point number 定点数
Floating point number 浮点数
Primary code 原码
One’s complement 反码
Two’s complement 补码
Code (动)编码
BCD:Binary Coded Decimal 二进制编码的
十制数
Gray code 格雷码
Odd-even check code 奇偶校验码
Hamming code 海明码
ASCII:American standard code for
Information Interchange 美国(国家)
信息交换标准码
Character code 字符码
Chinese character code 汉字代码
Arithmetic operation 算术(运算)操作符
Logical operation 逻辑(运算)操作符
Overflow 溢出
1、二进制数
2、数制之间的转换
3、二进制数在计算机中的表示
4、数的原码、反码、补码表示
5、定点数的四则运算
6、其它基本数据表示 ——二进制编码
7、数据校验码
8、浮点数的编码及运算
第二章 二进制数及其在计算机中
的表示与运算
要求:
1、掌握二进制数的概念。
2、掌握各种数制之间的相互转换。
3、掌握二进制数在计算机中的表示
4、掌握二进制数的原码、反码、补码表示。
5、掌握定点数的四则运算
6、掌握二进制编码的概念,BCD,ASCII与汉字的
编码。
7、掌握数据校验码的概念;掌握奇偶校验码。
8、了解浮点数的编码及运算
一、十进制数
253.48=2× 102+ 5× 101+ 3× 100+ 4× 10-1+ 8× 10-2
2.1 二进制数
位置不同,贡献不同! 权重不同!
十进制数的三个特征:
1、由 0,1,2,3,4,5,6,7,8,9共 10个基本数字符号
(基数)来表示数据。
2、计数时满十向高位进一(逢十进一)。
3、相同数符,位置不同,其权值不同。
二、二进制数
假设仅仅用 0,1两个数字符号来进行计数,
若采用位置计数法,如何对下列数据进行
计数:
2.1 二进制数
0
1
2
3
4
5
6
7
8
9
0
1
100
10
11
101
110
1001
111
1000
分析:
由 0开始计数时,每次增 1;当当前数为
1时,若再增 1:
1+1=?
答案 1,1+1=2
答案 2,1+1=10
(10)2
可以总结如下要点:
1,由 0,1两个数符进行计数时,数值中
不可能出现其它符号,只能是 0和 1;
2,为了使计数能够继续进行,必须往高
位产生进位。即:
“逢二进一,
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
10000
10001
10010
10011
10100
10101
类似地二进制各位的权值如下:
例:
1110=1× 23+ 1× 22+ 1× 21+ 0× 20
=8+ 4+ 2+ 0
=( 14) 10
X X X X X, X X
202122232
4
2-1 2-2
253.48=2× 102+ 5× 101+ 3× 100+ 4× 10-1+ 8× 10-2
=16+ 8+ 0+ 2+ 0+ 0.5+ 0.0+ 0.125
=26.625
例:
11010.101=? 2
-1 2-3
下面咱们来定义一种三进制数:
1、它由 0,1,2这三个基数组成;
2、它逢 3进 1;
例:下列三进制数:
(102.2)3=1× 32+ 0× 31+ 2× 30+ 2× 3-1
八进制数:
1、它由 0,1,2,3,4,5,6,7这八个基数
组成;
2、它逢 8进 1;
例,下列八进制数:
(706.2)8=7× 82+ 0× 81+ 6× 80+ 2× 8-1
十六进制数:
1、它由 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
这 16个基数组成;
2、它逢 16进 1;
例,如十六进制数 (0A2C)是个什么概念呢?
(0A2C) 16=0× 163+ A× 162+ 2× 161+ C× 160
=0× 163+ 10× 162+ 2× 161+ 12× 160
=0+ 2560+ 32+ 12=2604
三、二进制数的四则运算
1、加法
2.1 二进制数
1 1 0 1
+ 1 1 0 1
1 0 0 1.1 1
+ 1 1 0 1.1 0
1 1 0 1 0 1 0 1 1 1.0 1
逢 2进 1
2、减法
- 1 1 0 1 - 1 0 0 1.1 1
1 1 0 1 0 1 1 1 1 1.0 1
借 1当 2
1 1 0 1 1 0 1 0 1.1 0
0 1 0 0 1.1 1
- 1 1 1 1 1.0 1
- 0 1 0 0 1.1 1
1 1 1 1 1.0 1
1 0 1 0 1.1 0-
78-89 =- (89-78)
- 1 0 1 0 1.1 0
3、乘法
× 1 1 0 1 × 1 0 0 1.1 1
1 0 1 0 1 1 1 1 1.0 1
答案,100110000.1011
1 0 1 0
1 0 1 0
0 0 0 0
1 0 1 0
1 0 0 0 0 0 1 0
4、除法
1 1 1 0 1 0 11 0 0 1
1 0 0 1
1 0 1 11 0 0 1
1 0 0
1 0 0 1
0
1 1 0 1
1
1 1 1 0 1 0 11 0 1
练习:
答案:
商为,10111 余数为,10
四、计算机中为什么要用二进制数
1,二进制数表示数字容易在机器上实现,因为物质
世界中二稳态的电子元件容易制造并且工作可靠
(物质原因);
2,二进制运算规则简单;
3,可采用逻辑代数作设计分析的工具(理论原因);
4,节约存储空间。
2.1 二进制数
一、二进制数 ====> 十进制数
1、整数转换
2.2 数制之间的转换
例:
(1110)2=1× 23+ 1× 22+ 1× 21+ 0× 20
=8+ 4+ 2+ 0
=(14)10
2、小数转换
例,(0.1110)2=?
=1× 2-1+ 1× 2-2+ 1× 2-3+ 0× 2-4
=0.5+ 0.25+ 0.125+ 0
=(0.875)10
二、十进制数 ====> 二 进制数
2.2 数制之间的转换
例,(14)10
=1× 23+ 1× 22+ 1× 21+ 0× 20
=8 + 4 + 2 + 0
=(1110)2
例,(114)10
… +□ × 23+□ × 22+□ × 21+□ × 20
=(1 1 1 0 0 1 0 )2
27=128 26=64
25=32 24=16
□× 26+ 25+ 24+□ × 23+□ × 22+ □ × 21+□ × 20
26+ 25+ 24+ 21
(64+32+16+2)
十进制数 ====> 二 进制数规则:
“整数部分 用除 2取余!,
Why
例,(114)10=?
1× 26+ 1× 25+ 1× 24+ 0× 23+ 0× 22+ 1× 21+ 0× 20
1× 25+ 1× 24+ 1× 23+ 0× 22+ 0× 21
1× 24+ 1× 23+ 1× 22+ 0× 21
1× 23+ 1× 22+ 1× 21
1× 22+ 1× 21
1× 21
1× 26+ 1× 25+ 1× 24+ 0× 23+ 0× 22+ 1× 21
114
57
28
14
7
3
1
0
0
1
0
0
1
1
1
高位(1110010)2
“小数部分 用乘 2取整!,
十进制数 ====> 二 进制数规则二:
Why
=1× 2-1+ 0× 2-2+ 1× 2-3
=0.5+ 0.0+ 0.125
例,(0.625)10 = (X.XX… X)2
(0.625)10
1、将下列十进制数转换成二进制形式。
( 1) 7
( 2) 65
( 3) 1023
( 4) 1/8
( 5) 36.125
练习:
三、二进制数 <====> 其它 进制数
采用二进制计数的缺点:书写时位数太
多,容易出错,且不易读。如 16位二进制数
( 1010111100011010) 2
2.2 数制之间的转换
1、转换成八进制形式
2、转换成十六进制形式
解决的办法是:
二进制 八进制
000 — 0
001 — 1
010 — 2
011 — 3
100 — 4
101 — 5
110 — 6
111 — 7
解决办法之一,转换成八进制形式。
二进制:( 001 010 111 100 011 010) 2
例:将二进制 001010111100011010写成八进制形式。
( 1 2 7 4 3 2) 8
八进制:( 127432) 8
000—0
001—1
010—2
011—3
100—4
101—5
110—6
111—7
练习:
1、将二进制数 110101001011转换成八进制形式。
2、将二进制数 1101010.01011转换成八进制形式。
(2)650.23
152.23
152.26
(1)6513
110 101 0, 010 11
1 101 010, 010 11
001 101 010, 010 110
000—0 001—1
010—2 011—3
100—4 101—5
110—6 111—7
注意,二进制 ===>八进制时:
1) 整数部分由低位向高位的方向三位一组
进行,当高位不足三位时在前加 0补足。
2) 小数部分由高位向低位开始分组,最后
不足三位时,加 0补足。
001 101 010, 010 11
1101010, 01011
001 101 010, 010 110
152.26
解决办法之二,转换成十六进制形式。
二进制 十六进制 二进制 十六进制
0000 — 0 1000 — 8
0001 — 1 1001 — 9
0010 — 2 1010 — A
0011 — 3 1011 — B
0100 — 4 1100 — C
0101 — 5 1101 — D
0110 — 6 1110 — E
0111 — 7 1111 — F
同理,二进制 ===>十六进制时:
1) 整数部分由低位向高位的方向四位一组
进行,当高位不足四位时在前加 0补足。
2) 小数部分由高位向低位开始分组,最后
不足四位时,加 0补足。
0110 1010, 01011
1101010, 01011 6A.58
0110 1010, 0101 1000
1、将下列二进制数转换成十六进制形式。
( 1) 110010111.1001011
( 2) 1010100011.0011101
( 3) 100001011.11001
2、将下列各数转换成二进制形式。
( 1) (650.351)8
( 2) (650.351)16
( 3) (0ABF.DC)16
四、计算机中,位” 与,字节” 的概念
1、位:比特( bit = binary digit)
2.2 数制之间的转换
1 0 0 1 1 0 0 0
1 0
2、字节,Byte
1 0 0 1 1 0 0 0
1 0
3、字,Word
4,bit,Byte,Word之间的关系
1 Byte = 8 bit
1 Word = 2 Byte
5、常用的存储器容量单位有,Byte,KB、
MB,GB等。
它们的关系是:
1 KB (Kilo-Byte) = 210 Byte
1 MB (Mega-Byte) = 210 KB
1 GB (Giga-Byte) = 210 MB
思考题:
1 GB =? Byte
一、定点数与浮点数
1、什么是阶码、阶符、数码、数符?
2.3 二进制数在计算机中的表示
123.456 = 10+3× 0.123456
N = 10± j× (± S)
2、定点数与定点计算机
3、浮点数与浮点计算机
N = 2± j× (± S)
J恒定,如 j = 0
J可变:
二、定点数与浮点数在计算机中的格式
1、定点小数的表示格式
2.3 二进制数在计算机中的表示
符号 ·数值
小数点位置,但机器中不存在
0 0 1 0 1 1 0 0 + 0.01011
1 0 1 0 1 1 0 0 - 0.01011
2、(定点)整数的表示格式
符号 数值 ·
小数点位置,但机器中不存在
0 0 1 0 1 1 0 0
1 0 1 0 1 1 0 0
+
—
2、浮点数的表示格式
阶符 阶码 数符 · 尾数
0 0101110 1 0101100
=?
- 0.01011× 2-0101110
1、已知一机器数 0111001,试写出它所表示
的实际内容 (十进制形式的值)。
(1)作为一个定点整数时;
(2)作为定点小数时;
(3)作为浮点数时,其中数符、阶符各一
位,阶码2位,尾数4位;
练习:
三、计算机中二进制数的表数范围
1、定点小数
2.3 二进制数在计算机中的表示
1 1 1 1 1 1 1 10
1 1 1 1 1 1 1 11
最大值:
最小值:
设定点计算机的字长为 9位,其中 8个数值位,1个
符号位,则该计算机的表数范围是多大?
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 1
正最大值(负最小值):
正最小值(负最大值):
0/1
0/1
绝对值范围 (不含 0):
0.00000001~ 0.11111111
2-8~ 1-2-8
2、整数
设定点计算机的字长为 N+1位,其中 N个数值位,1个
符号位,则该计算机表示的的范围是多少?
1 1 … 1 1 1 ·0
N个 bit
小数点位置|M|≤2 N-1
一、带符号整数
1111
+1
10000 = 24
1 1 … 1 1 1 ·1
N+1个 bit
小数点位置
0≤M≤2 N+1-1
二、无符号整数
1 1 1 1 1 1 1 1 ·
8个 bit
小数点位置
例:如果用 8位表示一个整数。则
( 1) 带符号数表数范围为,|M| ≤2 7-1=127
( 2)无符号数表数范围为,0 ≤ M ≤2 8-1=255
若一台浮点计算机,尾数 8位,阶码
3位,另各有一位符号位,则所能表示的
数(绝对值)的范围是;
最小值,1111010000000 即 2-7× 2-1
最大值,0111011111111 即 27× 1-2-8
3、浮点数
若一台浮点计算机,尾数 n位,阶码
m位,另各有一位符号位。
阶符 阶码 m位 数符 · 尾数 n位
0/1 1…1 0 11…11
± (2m-1) 最大尾数,(1-2-n)最小尾数,2-1
则所能表示的数(绝对值)的范围是:
2 × 2-1~ 2 × (1-2-n)- (2m-1) + (2m-1)
一、原码
原码是一种机器数,原码表示法就是在机器
中用符号位 0,1表示数的正号和负号,而其
余位表示数本身。
2.4 数的原码、补码、反码
例:
若 X的 真值 为 (0.101)2则 原码 为,[X]原 =0.101
若 X的 真值 为- (0.101)2则 原码 为,[X]原 =1.101
练习:
若 [X]原 =1.10010,[Y]原 =0.01111,求 [X+Y]原?
答案,-0.00011(真值)
1.00011(原码)
1.10010 1.01101 1.01110
+ 0.01111
1.111011.000101.00011
原码表示法简单,转换成真值比较方便。
但是,计算机用原码做减法时,运算比较复杂:
1、判断符号;
2、比较两数绝对值;
3、用绝对值大的数减绝对值小的数;
4、以绝对值大的数的符号位作为结果的
符号位。
二、反码
1、求下列各数的原码、反码:
2.4 数的原码、补码、反码
-1011
1011
100101011
-1011.1101
正数的反码是其本身;负数的反码是:符号位
不变,数值位按位取反。
三、补码
2.4 数的原码、补码、反码
-3 = +9
这里加 9与减 3是等价的。
我们称 +9是 -3对 12的 补码 。 12是钟
表这类计数系统的 模 。
或者说,在 12进制计数中,-3的补
码是 9。 7-3=7+9
4=16
4=16-12
4=16 mod 12
即,4与 16是 同余 的
二进制数的补码:
[0]补 =?
[1]补 =?
[-1]补 =?
[0]补 =0 mod 2 = 0
[1]补 =1 mod 2 =1
[-1]补 = -1+2 mod 2 = 1
二进制数的补码:
[110]补 =?
[101]补 =?
[-110]补 =?
[-110]补 = -6 mod 8 = 8-6 mod 8 = 2 = 10
[-101]补 = -5 mod 8 = 8-5 mod 8 = 3 = 11
[-101]补 =?
1、正数的补码是它本身。
2、负数的补码求法如下:
( 1) 求原码
( 2) 求反码
( 3) 末位加 1
[-110]补 =[1110]原 =[1001]反 =[1010]补
[-101]补 =[1101]原 =[1010]反 =[1011]补
在二进制计数中,求 -1011的补码?
1111
- 1011
0100
+1
10101
取反 加 1
10000
- 1011
0101
-1011 11011 10100 10101
真值 原码 反码 补码
练习:
1、求 X=0.5 与 X=-0.5的原码、反码、补码。
提示:先将 X变成二进制形式 。
练习:
2、求下列各数的原码、反码、补码。
-0.1010
15/128
-11/128
-65
-253
练习:
3,(1)已知 [X]补 =0.1101,求 X。
(2)已知 [X]补 =1.1101,求 X。
答案:
(1)正数的补、原、反是其本身:即 X=[X]补 =0.1101
(2)由 [X]补 =1.1101
有,[X]反 =1.1100 则,[X]原 =1.0011
所以,X=-0.0011
问,在十进制计数中,-9的补码是多少? -5的
补码呢?
例,在十进制计数中,求,-789补码? 123的
补码?
答案,1,5
-789
1000
1000-789=( 999-789) +1
=210+1=211
123
补充材料
方法二:在十进制计数中,-789的补码是多少?
999
-789
210
+1
211
相当于取反
加 1
1000
-789
211
例,在十进制计数中,求 123-789的值?
123789
1000 1000-789=( 999-789) +1
=210+1=211
211+123 = 334
1000-334=( 999-334) +1
=665+1=666
一、定点补码的加、减法
采用补码,可用加法完成减法运算。
2.5 定点数的四则运算
补码加法公式是:
[X]补 +[Y]补 =[X+Y]补
上式成立的条件是,|X|< 1,|Y|< 1,|X+Y|< 1
验证:
( 1)当 X,Y均为正值时,显然成立。
( 2)、当 X> 0,Y< 0时可能有两种情况:
X+Y>0和 X+Y<0。
情况一,X+Y>0
X=0.1110
Y=-0.0101
[X]补 =0.1110
[Y]补 =1.1011
[X]补 + [Y]补 =10.1001
溢出位,计算机自动丢失。
X+ Y = 0.1110
-0.0101
0.1001 即,[X+ Y]补 =0.1001
情况二,X+Y<0
X=0.0101
Y=-0.1110
[X]补 =0.0101
[Y]补 =1.0010
[X]补 + [Y]补 =1.0111
X+Y=0.0101-0.1110
=-( 0.1110- 0.0101)
即,[X+ Y]补 =1.0111
0.1110
- 0.0101
0.1001=-0.1001
X=-0.1010
Y=-0.0100
[X]补 =1.0110
[Y]补 =1.1100
[X]补 + [Y]补 =11.0010
溢出位,计算机自动丢失。
X+ Y =-0.1010
-0.0100
-0.1110 即,[X+ Y]补 =1.0010
( 3)、当 X< 0,Y< 0时。
由( 1)、( 2)、( 3)可知结论成立,即:任意
两数的补码之和等于两数之和的补码。
练习:
[X]补 = 0.1110
[Y]补 = 0.0101
[X]补 + [Y]补 = 1.0011
X+ Y =0.1110
0.0101
1.0011
[X+ Y]补 =?
( 1)已知,X=0.1110,Y=0.0100,分别
求 [X]补 + [Y]补 和 [X+ Y]补 。
X=0.1110
Y=0.0101
两正数相加结
果为负?
练习:
[X]补 = 1.0010
[Y]补 = 1.1011
[X]补 + [Y]补 =10.1101
X+ Y =-0.1110
-0.0101
-1.0011
( 2)已知,X=-0.1110,Y=-0.0100,
分别求 [X]补 + [Y]补 和 [X+ Y]补 。
X=-0.1110
Y=-0.0101
溢出位,计算机自动丢失。
两负数相加变成正数。为
什么?
[X+ Y]补 怎么
求?
二、运算溢出与变形补码
变形补码 主要用来判断 运算溢出 情况。变
形补码又称模 4补码,即它用两个二进制
位表示数的符号。
2.5 定点数的四则运算
例:
X=+0.1011 则 [X]补 =00.1011
X=-0.1011 则 [X]补 =11.1011
即在原来模 2补码表示的符号位
之前再加上一位相同的符号位。
[X]补 = 00.1110
[Y]补 = 00.0101
[X]补 + [Y]补 = 01.0011
例 1 已知,X=0.1110,Y=0.0100,分别
求 [X]补 + [Y]补 和 [X+ Y]补 。
X=0.1110
Y=0.0101
两正数相加
果为负 ---上溢
即:结果 ≥ 1时
[X]补 =11.0010
[Y]补 =11.1011
[X]补 + [Y]补 =110.1101
例 2 已知,X=-0.1110,Y=-0.0100,
分别求 [X]补 + [Y]补 和 [X+ Y]补 。
X=-0.1110
Y=-0.0101
溢出位,计算机自动丢失。
两负数相加变成正数。 下溢
即:结果 ≤ -1时。
变形补码判定溢出情况
00 结果正常 0< X+Y <1
11 结果正常 -1< X+Y <0
01 上溢 X+Y>1
10 下溢 X+Y<-1
The result is Correct?
三、定点乘法
0,1 1 0 1
× 0,1 1 0 1
2.5 定点数的四则运算
1 1 0 1
0 0 0 0
1 1 0 1
1 1 0 1
0.1 0 1 0 1 0 0 1
方法 1,人的
习惯方法!
0,1 1 0 1
× 0,1 1 0 1
0,0 0 0 0 1 1 0 1
0,1 0 1 0 1 0 0 1
方法 2,小数点位
置固定,将乘法分
解为 右移 操作!
0,0 0 0 0 0 0 0
0,0 0 1 1 0 1
0,0 1 1 0 1
4次右移
3次右移
2次右移
1次右移
0,0 0 0 0
0,1 1 0 1
计算机
做乘法
的方法。
将乘法
分解为
右移与
加法的
交替 操
作 !
0,0 1 1 0 1
+ 0,0 0 0 0
+ 0,1 1 0 1
第一次部分积
部分积右移一位
乘数为 0,加被乘数
0.1101× 0.1101
0,0 1 1 0 1
0,0 0 1 1 0 1
第二次部分积
部分积右移一位
乘数为 1,加被乘数
1,0 0 0 0 0 1
0,1 0 0 0 0 0 1
+ 0,1 1 0 1
第三次部分积
部分积右移一位
乘数为 1,加被乘数
1,0 1 0 1 0 0 1
0,1 0 1 0 1 0 0 1
+ 0,1 1 0 1
第四次部分积
部分积右移一位,为最终乘积
累加器清零
乘数为 1,加被乘数
定点乘法时,计算机对 结果符号位 的处理:
两正数相乘 0+0 = 0
一正一负相乘 1+0 = 1
两负数相乘 1+1 = 0
符号相加
练习,已知 X=0.1101,Y=1.0101,用计算
机做乘法的方法求 X× Y=?。
提示,( 1)注意符号位
( 2)要求写出详细步骤
两个要点,一是做加
法;二是部分积右移。
四、定点除法
乘法 除法
2.5 定点数的四则运算
除法是乘法的逆运算。
做加法 做减法
右移 左移
做减法 可用补码做加法来代替 !
除法流程:
X/Y 求 [-Y]补
余数
左移
加补码
…
左移
加补码
0.10101001
1.01010010
-0.1101
0.1101 0.10101001
1.01010010
+1.0010
0.1101
0,1 0 1 0 1 0 0 10,1101 1,0 1 0 1 0 0 1 0
0.
被除数左移一位
1.1101
(变负数 )
1.0011
(变补码 )
+1,0 0 1 1 0 0 0 0 加补码(做减法)
商清零
将除数变成补码形式
余数为正,则商为 10,1 0 0 0 0 0 1 0
被除数左移一位1,0 0 0 0 0 1 0 0
加补码(做减法)+1,0 0 1 1 0 0 0 0
1
0,0 0 1 1 0 1 0 0 余数为正,则商为 1
1
被除数左移一位0,0 1 1 0 1 0 0 0
加补码(做减法)+1,0 0 1 1 0 0 0 0
1,1 0 0 1 1 0 0 0 余数为负,说明不够减。则商为 0
加除数本身,恢复上一次多做的减法+0,1 1 0 1 0 0 0 0
0,0 1 1 0 1 0 0 0 余数被恢复
被除数左移一位
加补码(做减法)+1,0 0 1 1 0 0 0 0
0,1 1 0 1 0 0 0 0
0
0,0 0 0 0 0 0 0 0 余数为 0,则商为 1,结束除法过程
1
0,1 0 1 0 1 0 0 10,1101 1,0 1 0 1 0 0 1 0
0.
1.1101
(变负数 )
1.0011
(变补码 )
+1,0 0 1 1 0 0 0 0
0,1 0 0 0 0 0 1 01,0 0 0 0 0 1 0 0
+1,0 0 1 1 0 0 0 0
1
0,0 0 1 1 0 1 0 0
1
0,0 1 1 0 1 0 0 0+1,0 0 1 1 0 0 0 0
1,1 0 0 1 1 0 0 0
+0,1 1 0 1 0 0 0 0
0,0 1 1 0 1 0 0 0
+1,0 0 1 1 0 0 0 0
0,1 1 0 1 0 0 0 0
0
0,0 0 0 0 0 0 0 0
1 R1 R2 R3 R4
(R3+Y) × 2 -Y R4=
R4=2× R3+
Y
1,1 0 0 1 1 0 0 0
+0,1 1 0 1 0 0 0 0
0,0 0 0 0 0 0 0 0
1,0 0 1 1 0 0 0 0
如果余数为负,不必恢复
余数只要 继续 将余数 左移 一位,
再加上 除数 即可!
这种方法叫做 加减交替法,
相对地前者叫做 恢复余数法。
练习:
( 1)已知 X=0.1000001,Y=0.1010,求X/Y。
( 2)已知 X=0.1101,Y=0.0101,求X/Y。
注意的问题:
1、已知 X=0.1000001,Y=0.1010,求X/Y。
A、先求[-Y] 补,不要出错。
B、运算时,先左移,再加补。
B、余数为负时,注意恢复余数(加除数)。
2、已知 X=0.1101,Y=0.0101,求X/Y。
A,本题中,Y明显不是计算机定点数形式(小数
点后第一位应该为1,现为0),将它变为定点形
式,即:Y= 0.1010。
B,变换后,|X|≥|Y|,可知商 ≥ 1.0,但定点除法中
计算机无法表示大于 1的商数,所以可先将 X右移一位
,使得 |X|< |Y|,即 X=0.01101。
C,再按加减交替法或恢复余数进行运算,得到商 S和
余数 Q。
D,因上述除数 × 2,同时又将 Y/2,因此,正确的结果
应该是,S=S× 4,Q=Q× 2
y=2Y
x=X/2
X=0.1101,Y=0.0101
做 x/y=?
x=Sy+Q
X/2=S× 2Y+Q
X=4SY+2Q
X/Y的商为 4S,余数为 2Q
0.101/0.0 1 1 0 1 [-y]补 =1.011
+1.0 1 1
0.1 1 0 1
0.0 0 1 1
0.1 0 1 0 0
0.0 1 1+1.0 1 1
1.1 1 01.1 0
+0.1 0 1
0.0 0 1
+1.0 1 1 0.0 1
1.1 0 1 1.0 1
+0.1 0 1 1.1 1 1 -0.0 0 0 0 0 0 0 1
0.1 0 1 0 1× 0.1 0 1
0.1 0 1 0 1
0.0 1 0 1 0 1
0.0 0 0 0 0
0.1 0 1 0 1
0.0 1 0 1 0 10.0 0 1 0 1 0 1
0.1 1 0 1 0 0 10.0 1 1 0 1 0 0 1
0.0 1 1 0 1
X=4SY+2Q
0.1 0 1 0 0 -0.0 0 0 0 0 0 0 1
X=0.1101,Y=0.0101
1 0, 1 0 0 -0.0 0 0 0 0 0 1
真正的商 真正的余数
即,0.1101=10.1× 0.0101-0.0000001
计算机中可以用二进制形式表示无符
号数、带符号数定点、浮点数,也可以进
行四则运算。
由于采用了二进制形式,使四则运算
建立在加法的基础上,从而完成了数据的
数值计算机问题。
但计算机如何处理字符(如汉字,英
文)信息、如何进行逻辑判断、如何将我
们的熟悉的十进制数字进行识别与存储?
2.6 二进制编码
计算机
二进制
( 101010… )
人
汉字、英文
数字、图形
…
一,4位( bit)的 BCD编码
解决十进制数如何用二进制数来表示的问题。
2.6 二进制编码
BCD( Binary Coded Decimal)码,二进制编
码的十进制数。
1、四位有权码
十进制数 8421 BCD 5211 BCD
0 0000 0000
1 0001 0001
2 0010 0011
3 0011 0101
4 0100 0111
5 0101 1000
6 0110 1010
7 0111 1100
8 1000 1110
9 1001 1111
2、四位无权码
十进制数 余 3码 格雷码( 1) 格雷码( 2)
0 0011 0000 0000
1 0100 0001 0100
2 0101 0011 0110
3 0110 0010 0010
4 0111 0110 1010
5 1000 1110 1011
6 1001 1010 0011
7 1010 1000 0001
8 1011 1100 1001
9 1100 0100 1000
课堂练习:
( 731) 10=(?) BCD
( 1011.01) 2=(? )BCD
二,6位( bit)的 BCD编码
4位 BCD码只能表示 24=16种不同的符号,
如果要同时表示英文字符、数字、特殊符号
(如 #,$等)则无法表示完全。
2.6 二进制编码
区域位 后四位 表示的符号
00 XXXX 0-9及部分特殊符号
11 XXXX A-I及部分特殊符号
10 XXXX J-R及部分特殊符号
01 XXXX S-Z及部分特殊符号
三,ASCII码
ASCII( American Standard Code for
Information Interchange)。
2.6 二进制编码
1000001
A
1100001
a
0110001
1
1000010
B
1100011
c
0110000
0
低位
高位 0000 0001 0010 0011 …… 1100 1101 1110 1111
0000 NUL SOH STX ETX … FF CR SO SI
0001 DLE DC1 DC2 DC3 … FS GS RS US
0010 SP !, # …,-, /
0011 0 1 2 3 … < = >?
0100 @ A B C … L M N O
0101 P Q R S … \ ]
0110,a b c … l m n o
0111 p q r s … | } ~ DEL
ASCII码表
四,EBCDIC码
EBCDIC码是扩展的信息交换码的简称,
它由 8位组成,高 4位为区域比特,低 4位为
数字比特。主要用在 IBM等大型机中。凡区
域比特前二位为 00的,均不代表任何字符。
2.6 二进制编码
五、汉字的编码
在第十章专门讲述。
2.6 二进制编码
是否可用 8bit来为汉字进行编码?
数据校验码是一种具有发现某些错误或
具有自动纠错能力的数据编码方法。
它的实现原理是在合法的数码之间加进
一些附加的编码,当合法数据出现某些错误
时,成为非法编码。
2.7 数据校验码
一、奇偶校验码
2.7 数据校验码
数据 奇校验编码 偶校验编码
0000000 1 0000000 0 0000000
1010100 0 1010100 1 1010100
0111111 1 0111111 0 0111111
1111111 0 1111111 1 1111111
校验位
数据位
1、垂直奇偶校验
2、水平奇偶校验
0 1 0 1 1
0 0 0 0 1
1 1 0 1 0
1 1 1 0 0
校验位 0 0 1 1
二、海明校验码
2.7 数据校验码
2.7 数据校验码
一、编码方法
1、整数的编码方法
2.8 浮点数的编码及运算
[X]原 =X 0≤X < 2n
[X]原 =2n+ X -2n< X≤0
0 1 1 1 1 1 0 1
1 1 1 1 1 1 0 1
设,|X|=(1111101)2=(125)10
正数:
负数:
[X]反 =X 0≤X < 2n
[X]反 =2n+1-1+ X -2n< X≤0
1 1 1 1 1 1 1 1
1 1 1 1 1 0 1
1 0 0 0 0 0 1 0
-
设,|X|=(1111101)2=(125)10
真值:
原码,1 1 1 1 1 1 0 1
反码:
1 1 1 1 1 0 1-
2n+1-1
+ X
1 0 0 0 0 0 1 0
[X]补 =X 0≤X≤2 n
[X]补 =2n+1+ X -2n< X≤0
[X]补 =[X]反 + 1
0 0 0 0 0 0 0 0
1 1 1 1 1 0 1
1 0 0 0 0 0 1 1
1
-
2、浮点数的编码方法
阶符 阶码 数符 · 尾数
1 bit n bit 1 bit m bit
通常用 移码 表示。
将补码的符号位变反 ===> 移码
例:
X=+1011,[X]补 =01011,[X]移 =11011
X=-1011,[X]补 =10101,[X]移 =00101
二、浮点数的运算
1、浮点数加减法运算
2.8 浮点数的编码及运算
五个步骤:
1)对阶
2)尾数加减
3)规格化处理
4)舍入
5)检查阶码是否溢出
例:
已知,X=2010× 0.1101,Y=2100× (-0.1010),
求 X+ Y?
1)对阶
[X]补 = 00 010 00 1101
阶符 阶码 尾符 尾数
[Y]补 = 00 100 11 0111
(010-100)2 = 2-4 = -2,说明 X的阶码比 Y小
2个, 数量级,,因此应将 X的尾数右移 2位,使
X与 Y在同一个, 数量级, 上。 1101===>001101
2)尾数加减
[X]补 = 00 100 00 001101
阶符 阶码 尾符 尾数
[Y]补 = 00 100 11 0111
11 101001
3)规格化处理
附录:专业术语英汉对照
Decimal number 十进制数
Binary number 二进制数
Octal number 八进制数
Hexadecimal number 十六进制数
Base 基
Weight 权
Fixed point number 定点数
Floating point number 浮点数
Primary code 原码
One’s complement 反码
Two’s complement 补码
Code (动)编码
BCD:Binary Coded Decimal 二进制编码的
十制数
Gray code 格雷码
Odd-even check code 奇偶校验码
Hamming code 海明码
ASCII:American standard code for
Information Interchange 美国(国家)
信息交换标准码
Character code 字符码
Chinese character code 汉字代码
Arithmetic operation 算术(运算)操作符
Logical operation 逻辑(运算)操作符
Overflow 溢出