Upload
olaf
View
69
Download
6
Embed Size (px)
DESCRIPTION
数制与码制 复习. 2011 年 7 月. 控制科学与工程学院. 1. 数制 常用数制 数制间的转换 二进制数的运算 2. 码制 机器数与真值 原码、反码及补码 常用编码. 微型计算机中的常用数制. 微型计算机中常用的数制有三种: 十进制数 二进制数 十六进制数. 1 . 十进制数 十进制数是我们最熟悉的一种进位计数制, 其主要特点是: (1) 它由 0 、 1 、 2 、 3 、 4 、 5 、 6 、 7 、 8 、 9 不同的基本数码符号构成,基数为 10 。 (2) 进位规则是“ 逢十进一 ”,一般在数的后面加符号 D 表示十进制数。 - PowerPoint PPT Presentation
Citation preview
数制与码制复习
2011 年 7 月
控制科学与工程学院
• 1. 数制–常用数制–数制间的转换–二进制数的运算
• 2. 码制–机器数与真值–原码、反码及补码–常用编码
微型计算机中常用的数制有三种:十进制数二进制数十六进制数
微型计算机中的常用数制
1 .十进制数 十进制数是我们最熟悉的一种进位计数制, 其主要特点是: (1) 它由 0 、 1 、 2 、 3 、 4 、 5 、 6 、 7 、8 、 9 不同的基本数码符号构成,基数为 10。
(2) 进位规则是“逢十进一”,一般在数的后面加符号 D 表示十进制数。
所谓基数,在数学中指计数制中所用到的数码的个数。
2 .二进制数 二进制数是计算机内的基本数制,其主要 特点是: (1) 任何二进制数都只由 0 和 1 两个数码组 成,其基数是 2 。 (2) 进借位规则是“逢二进一,借一当二”。
一般在数的后面用符号 B 表示这个数是二进制数。 二进制数同样可以用幂级数形式展开。
(3) 字节 byte : 8 位二进制数约定为 1 字节
MSB LSB
D7 D6 D5 D4 D3 D2 D1 D0位号:字节:
一个字节可表示 28 个值( 0 ~ 25
5 ) LSB: 最低有效位, D0位 MSB:最高有效位, D7位
(4) 字 word : 2 字节, 16 位二进制数
LSB : 最低有效位, D0 位
MSB : 最高有效位, D15 位
一个字有 216 个值( 0~65535 )
在微机软件编程时,十六进制数常用于代码和数据的缩写,其主要特点是:
(1) 十六进制数由 16 个数符构成: 0 、 1 、 2 、…、 9 、 A 、 B 、 C 、 D 、 E 、 F ,其中 A 、 B 、C 、 D 、 E 、 F 分 别 代 表 十 进 制 数 的10 、 11 、 12 、 13 、 14 、 15 ,其基数是 16 。
(2) 进借位规则是“逢十六进一,借一当十六”。一般在数的后面加一个字母 H 表示是十六进制数。
3 .十六进制数
各种进位制的对应关系 十进制 二进制 八进制 十六进制 十进制 二进制 八进制 十六进制0 0000 0 0 9 1001 11 9
1 0001 1 1 10 1010 12 A
2 0010 2 2 11 1011 13 B
3 0011 3 3 12 1100 14 C
4 0100 4 4 13 1101 15 D
5 0101 5 5 14 1110 16 E
6 0110 6 6 15 1111 17 F
7 0111 7 7
8 1000 10 8
( 1 ) 二进制数转化成十六进制数 采用四位二进制数合成一位十六进制数的方法,以小数点开始分成左侧整数部分和右侧小数部分。
数制间的转换
二进制数转换十六进制数 :
0001 1011 1110 0011 . 1001 0111 1000B
1 B E 3 . 9 7 8H
1 .二进制数与十六进制数的转换
( 2 ) 十六进制数转换成二进制数
十六进制数转换为二进制:
9 A B . 7 C 5 H
1001 1010 1011 . 0111 1100 0101B
将十六进制数的每位分别用四位二进制数码表示,然后把它们连在一起即为对应的二进制数。
2. 二进制数与十进制数间的转换 ( 1 )二进制数转换成十进制数将二进制数按权展开后相加即得到对应的十进制数。 各位的权为进制 r的相应次幂 例 将 1001B 转换成十进制数。 解:按权相加得: 1001B = 1×23+1×20 = 8+1 = 9D = 9
其中,十进制数的后缀“ D” 可省略。
对于小数,
0.101B = 1×2-1 + 0×2-2 + 1×2-3 = 0.625D
二进制数每一位的权是:以小数点分界,
…..24 , 23 , 22 , 2 1, 2 0 . 2-1, 2-2, 2 -3, ……
小数的转换
( 2 ) 十进制数转化成二进制数 十进制数的整数部分和小数部分转化成二进制数的方法不同,要将它们分别转换,然后将结果合并到一起即得到对应的二进制数。
① 十进制整数转成二进制整数的常用方法是“除 2 取余法”,即用 2 连续去除要转换的十进制数和所得的商,直到商小于 2
为止,依次记下各个余数,然后按最先得到的余数为最低位,最后得到的余数为最高位依次排列,就得到转换后的二进制整数。
45 余数 22 1
11 0
5 1
2 1
1 0
0 1
2
2
2
2
2
2
即 45 = ( 101101 ) B
例 1 、将十进制数 45 转换成二进制数。
②十进制小数转换成二进制小数的常用方法是“乘 2 取整法”,即用 2 连续去乘要转换的十进制小数部分和前次乘积后的小数部分,依次记下每次乘积的整数部分,直到小数部分为 0 或满足所需要的精度为止,然后按最先得到的整数为二进制小数的最高位,最后得到的为最低位依次排列,就得到转换后的二进制小数。
0.6875
× 2
最高位 取 1 1.3750
0.375
× 2
取 0 0.750
× 2
取 1 1. 50
0.5
× 2
最低位 取 1 1. 0
从上至下写成从左至右 10110.6875D = 0.
B
例 将 45.6789 转换为二进制数,其中二进制小 数保留 4 位。 解:
∴ 45.6789 = 101101.1011B
3 .十六进制数和十进制数间的转换 ( 1 )十六进制数转换成十进制数
将十六进制数按权展开后相加即得到对应的十进制数。 例 1.5 将十六进制数 3FEA 换成十进制数。 解: 3FEAH = 3×163+15×162+14×161+10×160
= 16362 D = 16362
3AB . 11H = 3×162+A×161+B×160+1×16-1+1×16-2
=939 . 0664 D
(2) 十进制数转换成十六进制数 与十进制数转换成二进制数类似,十进制整数部分采用“除 16 取余逆排法”,十进制小数部分采用“乘 16 取整顺排法”。
例 将 3901.76171875 转换成十六进制数。
∴ 3901.76171875=F3D.C3H
二进制数的运算算术运算• ( 1 ) 加法运算 运算规则为: 0+0=0 、 1+0=0+1=1 、 1+1=10( 向高位有进位 ) 。• ( 2 ) 减法运算 运算规则为: 0-0=0 、 1-0=1 、 1-1=0 、 0-1=1( 向高位借 1 当作 2) 。
• ( 3 ) 乘法运算 运算规则为: 0×0=0 、 0×1=1×0=0 、 1×1=1 。• ( 4 ) 除法运算 除法运算是乘法运算的逆运算。与十进制类似,从被除数最高位开始取出与除数相同的位数,减去除数。
逻辑运算微机内二进制信息的逻辑运算由专门的逻辑电路完成。 ( 1 ) 逻辑与运算 逻辑与常用符号“ &” 表示,运算规则为:• 0&0=0, 1&0=0, 0&1=0, 1&1=1
• 两个位数相同的二进制数进行逻辑与时,只是对应位进行与运算。
( 2 ) 逻辑或运算 逻辑或又称为逻辑加,常用符号“”表示,其运算规则为:
0 0=0 , 1 0=1 , 0 1=1 , 1 1=1 。 ( 3 ) 逻辑非运算 逻辑非运算又称逻辑取反,常用运算符号“ ~” 表示 .
( 4 ) 逻辑异或运算 逻辑异或又称半加,是不考虑进位的加法,常用运算符号 ^ 表示。
例 72H ^ABH = ? 解: 0111 0010 B
^ 1010 1011 B
1101 1001 B
∴ 72H ^ ABH = 11011001B = D9H
• 1. 数制–常用数制–数制间的转换–二进制数的运算
• 2. 码制–机器数与真值–原码、反码及补码–常用编码
在计算机内部,所有信息都是用二进制数串( 0 、 1 )的形式表示的。 整数通常都有正负之分,计算机中的整数分为无符号的和带符号的。
无符号的整数用来表示 0 和正整数,带符号的整数可以表示所有的整数。
由于计算机中符号和数字一样,都必须用二进制数串来表示,因此,正负号也必须用 0 、 1 来表示。
机器数与真值
通常我们用最高的有效位来表示数的符号(当用 8 位来表示一个整数时,第 8 位即为最高有效位,当用 16位来表示一个整数时,第 16位即为最高有效位。)
0 表示正号、 1 表示负号。 这种正负号数字化的机内表示形式就称为“机器数”, 相应的机器外部用正负号表示的数称为“真值”。 将一个真值表示成二进制字串的机器数的过程就称为
编码。
• 机器数分为无符号数、有符号数
• 无符号数如:00000001 、 10010011 、 01010010 、 …… 等等,
范围:00H ~ FFH 。
• 有符号数如:• +1010110B ( +56H )、 -1101001B ( -69H )
01010110B 、 11101001B
机器数
真值
真值
机器数
56H E9H
无符号数没有原码、反码和补码一说。只有带符号数才存在不同的编码方式。计算机内一般使用补码。( 1 )原码
“+” 用 0 表示,“ -” 用 1 表示,数值部分为该数本身,这样的机器数叫原码。
如, [+3] 原 = 0000 0011B
[-3] 原 = 27 - ( -3 ) = 1 000 0011B
0 有两种表示方法: 00000000 —— +0
10000000 —— -0
原码最大、最小的表示: +127 、 -127
原码、反码和补码
( 2 )反码•正数的反码等于原码•负数的反码是将原码的数值位各位取反
[+4] 反 = [+4] 原 = 0000 0100 B
[-5] 反 = 1 111 1010 B
反码范围: -127 ~ +127
两个 0 : +0 —— 00000000 B
-0 —— 11111111 B
( 3 )补码计算机中,带符号数的运算均采用补码。
正数的补码与其原码相同; 负数的补码为其反码末位加 1 。 补码的概念:现在是下午 3 点,手表停在 12点,可正拨 3 点,也可倒拨 9 点。即是说 -9 的操作可用 +3 来实现,在 12 点里: 3 、 -9 互为补码。 运用补码可使减法变成加法。
12
3
如,设 X = - 0101110 B , 则 [X] 原 = 1 0101110 B
则 [X] 补 = [X] 反 + 1 = 1 1010001 + 00000001 = 11010010 B
如, [+6] 补 = [+6] 原 = 00000110 B
[-6] 补 = 1 111 1001 +0000 0001= 1111 1010 B
8 位补码的范围 – 128 ~ +127 。
0 的补码:只一个,即 00000000
而 10000000 B 是 -128 的补码。
原码、反码、补码对照表:见下表•注意,只是带符号的整数采用补码存储表示的,浮点数另有其存储方式。
八位二进制数所能表示的数据范围 机器数 无符号数 原码 反码 补码
00000000 0 +0 +0 +0
00000001 1 +1 +1 +1
. . . . .
01111111 127 +127 +127 +127
10000000 128 -0 -127 -128
10000001 129 -1 -126 -127
. . . . .
. . . . .
11111110 254 -126 -1 -2
11111111 255 -127 -0 -1
( 4 )补码的运算
当 X≥0 时, [X] 补 = [X] 反 =[X] 原
[ [X] 补 ] 补 = [X] 原 [X] 补 + [Y] 补 = [ X+Y ] 补
[ X-Y ] 补 = [ X+ ( -Y ) ] 补
例:已知 X=52 Y=38 求 X-Y
减法运算结果:
X-Y = 52-38 =14
[52] 原 0 0 1 1 0 1 0 0
[38] 原 - ) 0 0 1 0 0 1 1 0
[14] 原 0 0 0 0 1 1 1 0
计算机运算过程: 用补码加法实现减法
X-Y = [ [ X-Y] 补 ] 补 = [ [X] 补 +[-Y] 补 ] 补
=[ [52] 补 +[ -38] 补 ] 补
=[ 14 ] 补 =14
[52] 补: 0 0 1 1 0 1 0 0
[-38] 补: + ) 1 1 0 1 1 0 1 0
1 0 0 0 0 1 1 1 0
自然舍弃
• 采用补码运算具有如下特征:– 因为使用补码可以将符号位和其他位统一处理(采用采用原码原码和和反码反码表示时,表示时,符号位符号位不能同数值一道参加不能同数值一道参加运算)运算)
– 减法也可以按加法来处理,即如果是补码表示的数,不管是加减法都直接用加法运算即可实现。
– 两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃
• 这样的运算有两个好处:–使符号位能与有效值部分一起参加运算,从而简化运算规则。从而可以简化运算器的结构,提高运算速度;(减法运算可以用加法运算表示出来。)
– 加法运算比减法运算更易于实现。使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。
对机器:二进制数方便,
对人 :二进制数不直观,习惯于十进制数。
在编程过程中,有时需要采用十进制运算,但机器不认识十进制数。
怎么办?•BCD 码•ASCII 码
常用编码
1 . BCD 码 BCD 码是将每一位十进制数用二进制数编码,它保留了十进制的权,数字则用二进制数表示,因而也称为二 - 十进制数。一般用标识符 […]BCD表示。 BCD 码种类较多,如 8421 码、2421 码、格雷码等,其中最常用的编码为8421 码。
(1) 8421 码编码方法 8421 码编码原则是每位十进制数用 4 位二进制数来表示, 8 、 4 、 2 、 1 代表 4 位二进制数每一位的权。 8421 码名称也由此而得。十进制数共有 0 ~ 9 十个数字,而 4 位二进制数共有 16 种组合。 8421 码用其中 0000B ~1001B 组合表示 0 ~ 9 十个十进制数。而1010B ~ 1111B 六个编码舍去不用。它们之间的对应关系如表所示。
8421 码与十进制数的对应关系十进制数 BCD 码 十进制数 BCD 码
0 0000B 8 1000B
1 0001B 9 1001B
2 0010B 10 00010000B
3 0011B 11 00010001B
4 0100B 12 00010010B
5 0101B 13 00010011B
6 0110B 14 00010100B
7 0111B 15 00010101B
(2) BCD 码的运算 BCD 码用 4 位二进制数表示 0 ~ 9 十个十进制数,但 4 位二进制数可表示 16
种状态。因而有六种状态在 BCD 编码中为非法码。这样在 BCD 码的运算中必须进行修正才能得到正确的结果。
压缩的 BCD码
它是一种用 4 位二进制数表示十进制数 . 首先是用四位二制数表示个位,然后用四位二进制数表示十位, 然后百位 ...。比如 :251需要三个四位二进制数表示。 1 表示为 0001;5表示为 0101;2表示为 0010.最后 251的 BCD数据表示为 0010 0101 0001.
非压缩 BCD码
非压缩的 BCD码用 8 位二进制数表示一个十进制数位,其中低4 位是 BCD码,高 4 位是 0 。 251的非压缩 BCD数据表示为00000010 00000101 00000001.
采用压缩 BCD码比采用非压缩 BCD码节省存储空间。
• 当用来表示十进制数字 0-9 时,用二进制代码与8421BCD 代码完全相同。
• 而当表示的十进制数字大于 9 时,用二进制代码与8421BCD 代码表达就完全不同了。
• 用二进制表示就是二进制数字安权重求和,其值为十进制数字;
• 用 8421BCD 代码则是每一位十进制数字都用 4 位8421BCD 代码表示。如十进制数字 15 ,转化为二进制为 1111 ;用 8421BCD 码表示为 0001 0101 。
BCD 码与二进制数区别
2. ASCII 码
计算机不仅要认识各种数字,还要能识别各种文字符号。
计算机能识别 0 、 1 、 0 、 1 、……;这些0 、 1 、 0 、 1 、……有的代表数值,有的仅代表要处理的信息(如字母、标点符号、数字符号等文字符号)
人们事先已对各种文字符号进行二进制数编码。
ASCII 码( American Standard Coded for
Information Interchange )是“美国信息交换标准码”的简称,后来由国际标准组织( IS
O )确定为国际标准字符编码。它是微机中最常使用的字符编码。
ASCII 码由 7 位二进制码构成,可表示128 ( 27=128 )个字符, ASCII 码表见表 。
综上所述 ,
计算机中的数可以有各种不同的表示方法 ,
计算机中以一个字节为一个单元保存数据 ,
一个字节为 8 位二进制数 , 可以有 256 种组合 ,
也就是可以表示 256 个数据 ,
我们称它为机器数 , 每一个机器数实际表示的是什么 ,
要看采用的是哪种表示方法。
谢 谢!