? 二、十进制数间的相互转换
数的补码表示及求补运算
溢出判断本章内容
数制的基本概念
数字与字符的编码
学习数的不同表示方法
掌握不同进制数之间的相互转换
掌握计算机中数的表示方法 —补码表示法学习目的
掌握数字与字符编码的方法
2.1 数制及其转换一个数值,可以用不同进制的数表示 。
通常用数字后面跟一个英文字母来表示该数的数制 。
十进制数,D Decimal D可以省略不用,
二进制数,B Binary
八进制数,O Octal
十六进制数,H Hexadecimal.
例,1001B=09H=9D
一般地,任意一个十进制数 N都可以表示为:
N=Kn-1× 10n-1+Kn-2 × 10n-2+···+K1× 101+K0× 100
+
K-1× 10-1+K-2× 10-2+···+K-m× 10-m =

m
ni
iiK
1
10
一,二,八,十,十六进制数
*基数:数制所使用的数码的个数
*权:数制中每一位所具有的值,
式中,10称为十进制数的基数,i表示数的某一位,10i 称该位的权,Ki 表示第 I位的数码。 Ki 的范围为 0~9中的任意一个数
1,有十个不同的数字符号,0,1,2,… 9 。
2,遵循,逢十进一,原则。
十进制数的两个主要特点:
整数部分小数部分设基数用 R表示,则对于二进制,R=2,Ki为 0或 1,
逢二进一。
N=
对于八进制,R=8,Ki为 0~ 7中的任意一个,逢八进一 。
N=
对于十六进制,R=16,Ki为 0~ 9,A,B,C,D、
E,F共 16个数码中的任意一个,逢十六进一 。
N=

m
ni
i
iK
1
2

m
ni
i
iK
1
8

m
ni
i
iK
1
16

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
综上可见,上述几种进位制有以下共同点:
① 每种进位制都有一个确定的基数 R,每一位的系数 Ki有 R种可能的取值。
② 按,逢 R进一,方式计数,在混合小数中,小数点右移一位相当于乘以 R,左移一位相当于除以 R。
1 8 7 5.1 6 216316216103.2 101HA
十进制数、二进制数、十六进制数之间的关系如下表所示十进制 二进制十六进制
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.1.2 数制间的转换
1.二、八、十六进制数? 十进制数转换原则:两个有理数相等,则两数的整数部分与小数部分分别相等 。
这种转换只需将二、八、十六进制数按权展开。

(110.01)2 = 1× 22+ 1× 21+ 0× 20+ 0× 2-1+ 1× 2-2 =(6.25)10
(175)8 =1× 82+ 7× 81+ 5× 80 = (125)10
(B2C)16 =11× 162+ 2× 161+ 12× 160= (2860)10
2,十进制数?二、八、十六进制数
1) 整数转换 方法:除 2取余法。
DN 125?
N=125D=11111101B
余数
31
2
125
62
2
15
72
2
2
3
1=K2
1=K3
1=K4
1=K5
1=K61
0
2
2 1=K0
0=K1
低位高位0=K7
2,小数转换 方法:乘 2取整法例如:将十进制数 0.8125转换为二进制小数。
整个转换过程如下:
0.8125
× 2
1.625 整数部分为 1,K-1= 1 高位
0.625
× 2
1.25 整数部分为 1,K-2= 1
0.25
× 2
0.50 整数部分为 0,K-3= 0
0.50
× 2
1.0 整数部分为 1,K-4= 1 低位所以转换结果为,(0.8125)10= (0.1101)2
推广:
将十进制数转换为 N(二,十六,八 )进制数时,整数与小数分别按,除 N取余法,
与,乘 N取整法,进行转换 。
而 N进制数转换为十进制数均可按权展开相加得到 。
2.2 原码、反码和补码一、机器数和真值机器数:一个数连同其符号一起在机器中的表示 。
真 值:机器数的数值 。
8位微机中的带符号数:
D7 D6 D5 D4 D3 D2 D1 D0
符号位 数值位
D7 = 0 正数
1 负数机器数 真值
01010010B = +82
11010010B =?82
二、带符号数的三种表示方法
1,原码最高位为符号位 0 正数
1 负数
[+4]原 = 0 000 0100B
[?4]原 = 1 000 0100B
后面 n-1位是数值。
原码的特点:
(1) 数值部分即为该带符号数的二进制值。
(2),0”有 +0和 - 0之分,若字长为八位,
则,(+0)原 = 0 0000000,(–0)原 = 1 0000000
(3) 8位二进制原码能表示的数值范围为:
01111111~ 11111111,即 +127~ –127。
2,反码
[+5]原 = [+5]反 = 0 000 0101B
[?5]原 = 1 000 0101B
正数的反码与其原码相同。
负数的反码除符号位外将原码求反。
[?5]反 = 1 111 1010B
反码的特点:
(1),0”有 +0和 -0之分。
(2) 8位二进制反码所能表示的数值范围为 +127~ –127,
一般地,对于 n位字长的计算机来说,其反码表示的数值范围为 +2n-1–1~ –2n-1+1。
(3) 8位带符号数用反码表示时,若最高位为,0”(正数)
则后面的 7位即为数值;若最高位为,1”(负数),
则后面 7位表示的不是此负数的数值,必须把它们按位取反,才是该负数的二进制值。
3,补码
[?5]原 = 1000 0101B
正数的补码与其原码相同。
负数的补码是其反码 +1,即相应正数按位求反后在末位加 1。
[?5]反 = 1111 1010B
[?5]补 = 1111 1011B
补码的特点:
(1) [+0]补 = [–0]补 = 00000000,无 +0和 –0之分。
(2) 正因为补码中没有 +0和 –0之分,所以 8位二进制补码所能表示的数值范围为 +127~ –128;同理可知,n位二进制补码表示的范围为 +2n-1–1~ –2n-1。在原码、反码和补码三者中,只有补码可以表示 –2n-1。
(3) 一个用补码表示的二进制数,当为正数时,最高位 (符号位 )为,0”,其余位即为此数的二进制值;当为负数时,最高位 (符号位 )为,1”,其余位不是此数的二进制值,必须把它们按位取反,且在最低位加 1,才是它的二进制值。
4、补码的加法和减法:
(1) 求补运算:对一个二进制数按位求反后在末位加 1的运算。
[4]补 = 0000 0100B
[–4]补 = 1111 1100B
[[–4]补 ]补 = 0000 0100B
[?]补 [–?]补求补 [?]补求补
[4]补 [–4]补求补 [4]补求补
[–1]补 = 1111 1111B= FFH
例,机器字长为 8位,求 N= –1的补码表示 。
按位求反 1111 1110B
末位 +1 1111 1111B
[+1]补 = 0000 0001B
(2) 补码的加法规则:
[x + y]补 = [x]补 + [y]补
[x- y]补 = [x]补 + [- y]补补码的减法规则:
例,计算 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]补自动丢失例,机器字长为 8位。
25
– 32
[25]补 = 0001 1001B
[? 32]补 =1110 0000B
十进制
– 7 [? 7]补 =1111 1001B
二进制
0001 1001
1110 0000
1111 1001
+
– 57
– 25
– 32
[? 25]补 = 1110 0111B
[? 32]补 =1110 0000B
[?57]补 =1100 0111B
1110 0111
1110 0000
1 1100 0111
+
自动丢失
4,溢出的概念
8位二进制补码表示数的范围,?128 ~ +127
n位二进制补码表示数的范围,?2n?1 ~ +(2n?1?1)
若运算结果超过了字长一定的机器所能表示数的范围,称为溢出 。 此时运算结果出错 。
例 1,
令 CS为数值部分向符号位的进位,CS+1为符号位向高位的进位,此例中,CS= CS+1= 0,结果在 8位二进制补码表示范围内,没有溢出 。
00001111
01110000+
01111111
+15
+112
+127
00
CS+1
CS
例 2,
此例中,Cs≠ CS+ 1,产生了错误的结果,发生了溢出。
01111110
00000101+
10000011
+126
+5
125
01
CS+1
CS
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码是一种常用的数字编码。
BCD码,Binary-Coded Decimal,即二进制编码的十进制数。用 [… ] BCD表示。
这种编码法分别将每位十进制数字编成 4位二进制代码,从而用二进制数来表示十进制数。
[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位编码 )
例如,
二、汉字的编码我国根据汉字的常用程度定出了一级和二级汉字字符集,并规定了编码。这就是中华人民共和国国家标准,信息交换用汉字编码,(GB2312-80)中的汉字编码,即国标码。
该标准编码字符集共收录汉字和图形符号
7445个。
其中包括:
① 一般符号 202个:包括间隔符、标点、运算符、单位符号和制表符等。
② 序号 60个:包括 1.~ 20.、( 1)~( 20)、①~⑩和
( –)~( +)等。
③ 数字 22个,0~ 9和 I~ XII。
④ 英文字母 52个:大、小写各 26个。
⑤ 日文假名 169个:其中平假名 83个,片假名 86个。
⑥ 希腊字母 48个:其中大、小写各 24个。
⑦ 俄文字母 66个:其中大、小写各 33个。
⑧ 汉语拼音符号 26个。
⑨ 汉语注音字母 37个。
⑩ 汉字 6763个:这些汉字分两级,第一级汉字 3755个,
第二级汉字 3008个。
通过本章学习可掌握数的不同进制的表示法以及它们之间的相互转换;机器中数的表示方法 ——补码表示以及补码的运算和溢出判断;了解一些常用 的二进制编码 。
本章小结: