二、十进制数间的相互转换
数的补码表示及求补运算
溢出判断本章内容
学习数的不同表示方法
掌握不同进制数之间的相互转换
掌握计算机中数的表示方法 — 补码表示法学习目的
2.1 进位计数制一个数值,可以用不同进制的数表示 。
通常用数字后面跟一个英文字母来表示该数的数制 。
十进制数,D Decimal D可以省略不用,
二进制数,B Binary
八进制数,O Octal
十六进制数,H Hexadecimal.
例,1001B=09H=9
一、十进制数主要特点:
1,有十个不同的数字符号,0,1,2,… 9 。
2,逢十进位。
基数:数制所使用的数码的个数权:数制中每一位所具有的值,
10)56.1 2 3 4(56.1 2 3 456.1 2 3 4 D
210123 106105104103102101
十进制数的基数为 10,第 i位的权为 10i,
二、二进制数主要特点:
1,有两个不同的数码,0,1。
2,逢二进位。
二进制数的基数为 2,第 i位的权为 2i.
1101.001B= (1101.001)2
= 1× 23+1× 22 + 0× 21 + 1× 20+0× 2-1+0× 2-2 + 1× 2-3
= (13.125)10= 13.125
计算机采用二进制数的原因:
1,物理上容易实现
2,运算规则简单
3,可以用逻辑代数作为设计工具在计算机中使用二进制数,而书写时用十六进制数表示。
三、十六进制数主要特点:
1,有十六个不同的数字符号,0,1,2,… 9,
A,B,C,D,E,F。
2,逢十六进位。
1 8 7 5.1 6 216316216103.2 101HA
8 0 71671621633 2 7 012H
十六进制数的基数为 16,第 i位的权为 16i.
m
m
n
n
n
n
mnn
rbrbrbrarara
bbbaaa
2
2
1
1
0
0
1
1
2101,
在任一数制中,某一数的值等于每位数字乘以其权所得到的乘积之和 。
其中,r,基数 r 进制数
aibj,0,1,… r-1中任一数码
m,n,正整数
rk,各位数相应的权四、数制的通用表达式
i
权数码数值十进制数、二进制数、十六进制数之间的关系如下表所示十进制 二进制十六进制
0
1
2
3
4
5
6
7
8
0
1
2
3
4
5
6
7
8
0000
0001
0010
0011
0100
0101
0110
0111
1000
十进制 二进制十六进制
9
10
11
12
13
14
15
9
A
B
C
D
E
F
1001
1010
1011
1100
1101
1110
1111
2.2 数制转换一、二进制数?十进制数
D
B
6 2 5.11
21212121211 0 1.1 0 1 1 31013
D
B
45
21212121101101 0235
方法:按权展开相加法。
转换原则:两个有理数相等,则两数的整数部分与小数部分分别相等 。
二、十进制数?二进制数
1,整数转换 方法:除 2取余法。
DN 25?
N=25D=11001B
余数
6
2
25
12
2
3
1
2
2
2
0
1
0
0
1
1
a0
a1
a2
a3
a4
2,小数转换
DN 6 2 5.0?
N=0.625D = 0.101B
0.625
2
1.250
0.25
2
0.50
0.5
2
1.0
整数部分
1
0
1
a–1
a–2
a–3
BBBD 1 0 1.1 1 0 0 11 0 1.01 1 0 0 16 2 5.25
方法,乘 2取整法推广:
将十进制数转换为 N(二,十六,八 )进制数时,整数与小数分别按,除 N取余法,与
,乘 N取整法,进行转换 。
而 N进制数转换为十进制数均可按权展开相加得到 。
2.3 机器中数的表示一、机器数和真值机器数:一个数连同其符号在一起在机器中的表示 。
真 值:机器数的数值 。
8位微机中的带符号数:
D7 D6 D5 D4 D3 D2 D1 D0
符号位 数值位
D7 = 0 正数
1 负数机器数 真值
00011001B = +25
10011001B =?25
二、带符号数的三种表示方法
1,原码最高位为符号位 0 正数
1 负数
[+4]原 = 0 000 0100B
[?4]原 = 1 000 0100B
后面 n-1位是数值。
8位二进制原码表示的数的范围为 –127~ +127,
+0与 –0表示法不相同。
2,反码
[+4]原 = [+4]反 = 0 000 0100B
[?4]原 = 1 000 0100B
正数的反码与其原码相同。
负数的反码除符号位外将原码求反。
[?4]反 = 1111 1011B
8位二进制反码表示的数的范围为 –127~+127,
+0与 –0表示法不相同。
3,补码
[?4]原 = 1000 0100B
正数的补码与其原码相同。
负数的补码是其反码 +1,即相应正数按位求反后在末位加 1。
[?4]反 = 1111 1011B
[?4]补 = 1111 1100B
[–1]补 = 1111 1111B= FFH
例,机器字长为 8位,求 N= –1的补码表示 。
按位求反 1111 1110B
末位 +1 1111 1111B
[+1]补 = 0000 0001B
补码的特点:
(1) 8位二进制补码表示的数的范围,–128 ~ +127
(2) [+0]补 = [?0]补 = 0000 0000B
(3) 对负数补码求反加 1,回复为该数的绝对值。
(4) 采用补码后,可将减法运算转换成加法运算。
4、补码的加法和减法:
(1) 求补运算:对一个二进制数按位求反后在末位加 1的运算。
[4]补 = 0000 0100B
[–4]补 = 1111 1100B
[[–4]补 ]补 = 0000 0100B
[?]补 [–?]补求补 [?]补求补
[4]补 [–4]补求补 [4]补求补
(2) 补码的加法规则:
[x + y]补 = [x]补 + [y]补
[x- y]补 = [x]补 + [- y]补补码的减法规则:
例 1,计算 y = 99? 58 (用 8位二进制表示 )
99? 58 = 99 + (? 58)=41
[y]补 = [99? 58]补 = [99]补 + [? 58]补
01100011[99]补
+ 11000110[? 58]补
[99]补 = 0110 0011B
[? 58]补 = 1100 0110B
y = [y]补 = 0010 1001B = 41
1 00101001[41]补自动丢失例 2,机器字长为 8位。
25
– 32
[25]补 = 0001 1001B
[? 32]补 =1110 0000B
十进制
– 7 [? 7]补 =1111 1001B
二进制
0001 1001
1110 0000
1111 1001
+
– 57
– 25
– 32
[? 25]补 = 1110 0001B
[? 32]补 =1110 0000B
[?57]补 =1100 0111B
1110 0111
1110 0000
1 1100 0111
+
自动丢失
4,溢出判断
8位二进制补码表示数的范围,?128 ~ +127
n位二进制补码表示数的范围,?2n?1 ~ +(2n?1?1)
若运算结果超过了字长一定的机器所能表示数的范围,称为溢出 。 此时运算结果出错 。
例 1,00001110
01100100+
01110010
+14
+100
+114
设 CS为 D6向 D7进位,CS+ 1为 D7向高位进位。
结果正确 。
CS = CS+ 1 = 0 无溢出 !
10001010
01111000+
000000101
118
+120
+2
自然丢失例 2,
CS = CS+ 1 = 1 无溢出!
结果正确。
01111111
00000101+
10000100
+127
+5
124
例 3,
CS = 1,CS+ 1 = 0,结果溢出!
结果出错。
10000100
11111011+
01111111 +127
5
124例 4,
CS = 0,CS+ 1 = 1,结果溢出!
1
因为 CS = CS+ 1,则结果正确。
CS? CS+ 1,则结果溢出。
所以 溢出 = CS? CS+ 1
结果出错。
2.3 二进制编码一、数字编码
BCD码是一种常用的数字编码。
BCD码,Binary-Coded Decimal,即二进制编码的十进制数。用 [… ] BCD表示。
讨论:为什么提出 BCD码?
标准 BCD码表示法
0
十进制数
0000
标准 BCD码
0000
二进制数
1
2
3
4
5
6
7
8
9
10
11
12
94
0001
0010
0011
0100
0101
0110
0111
1000
1001
0001 0000
0001 0001
0001 0010
1001 0100
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1011110
1010(非法 )
1011(非法 )
1100(非法 )
1101(非法 )
1110(非法 )
1111(非法 )
[0100 1001 0001.0101 1000]BCD = 491.58
0100 0011B = 67D = [0110 0111]BCD
BCD码与二进制之间通常要经过十进制实现相互转换。
二、字符编码
ASCII 码是常用的字符编码。
ASCII,American Standard Code for
Information Interchange,
即美国信息交换标准代码。
ASCII 码用 7位二进制编码表示数字,字母和符号 。 在字长 8位微型计算机中,用低 7位表示 ASCII码,最高位 D7可用作奇偶校验位 。
,C,100 0011 (七位 ASCII码 )
1100 0011 (带偶校验的 8位编码 )
0100 0011 (带奇校验的 8位编码 )
例如,
通过本章学习可掌握数的不同进制的表示法以及它们之间的相互转换;机器中数的表示方法 —— 补码表示以及补码的运算和溢出判断;了解一些常用 的二进制编码 。
本章小结:
习题:
1,将下列十进制数转换为二进制数和十六进制数。 (1) 369 (2) 4095
2,将下列十六进制数转换为二进制数和十进制数。 (1) FA (2) 1234
3,下列各数均为十进制数,请用 8位二进制补码计算各题,并用十六进制数表示其运算结果,判断结果是否溢出 。
(1) (–85) –76 (2) (–85) – (–76)
4,下列各数为十六进制表示的 8位二进制数,
请说明当它们分别被看作是补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?
(1) D8 (2) FF