ch2计算机中的数制和编码ppt课件_第1页
ch2计算机中的数制和编码ppt课件_第2页
ch2计算机中的数制和编码ppt课件_第3页
ch2计算机中的数制和编码ppt课件_第4页
ch2计算机中的数制和编码ppt课件_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第2 2章章 计算机中的数制和编码计算机中的数制和编码教学内容:教学内容:1. 1. 进位计数制及其表示方法进位计数制及其表示方法2. 2. 数制之间的转换数制之间的转换3. 3. 字和各种字符的编码字和各种字符的编码第第2 2章章 计算机中的数制和编码计算机中的数制和编码 2.1 2.1 无符号数的表示和无符号数的表示和运算运算 2.2 2.2 带符号数的表示和带符号数的表示和运算运算 2.3 2.3 信息的编码信息的编码 2.4 2.4 数的定点与浮点表数的定点与浮点表示法示法计算机中的数制和编码计算机中的数制和编码 计算机的根本功能是进展数据和信息的处置。数据、信息以及为处置这些数据和

2、信息而编写的程序的代码都必需输入到计算机中。由于电子器件容易实现对两种形状的表示,因此,计算机中的数字、字符和指令等普通都运用二进制编码来表示。 在第2章中,将引见无符号数的表示方法、各种数制的相互转换以及二进制数的运算规那么等;将重点引见带符号数的表示方法、补码加减法运算估计运算溢出的判别方法;最后引见十进制数的BCD编码和字符包括字母、数字和符号的ASCII编码;引见数的定点和浮点表示方法。2.1 无符号数的表示及运算无符号数的表示及运算 2.1.1 无符号数的表示方法无符号数的表示方法 1. 十进制数的表示方法十进制数的表示方法 十进制计数法的特点是:十进制计数法的特点是: 逢十进一;逢

3、十进一; 运用运用10个数字符号个数字符号0,1,2,9的不同组的不同组合来表示一个十进制数;合来表示一个十进制数; 以后缀以后缀D或或d表示十进制数表示十进制数Decimal,但该,但该后缀可以省略。后缀可以省略。 任何一个十进制数可表示为: 110nmiiiDDN式中:m表示小数位的位数,n表示整数位的位数,Di为第i位上的数符可以是09十个数字符号中的任一个。 例例2.1 .5(D)= 1012105108103101 2. 二进制数的表示方法 二进制计数法的特点是: 逢二进一; 运用2个数字符号0,1的不同组合来表示一个二进制数; 以后缀B或b表示二进制数Binary。 任何一个二进制

4、数可表示为: 12nmiiiBBN式中:m为小数位的位数,n为整数位的位数,Bi为第i位上的数符0或1。 例例2.2 1101.11B= )(75.13212121202121210123D 3. 十六进制数的表示法十六进制数的表示法 十六进制计数法的特点是:十六进制计数法的特点是: 逢十六进一;逢十六进一; 运用运用16个数字符号个数字符号(0,1,2,3,9,A,B,C,D,E,F)的不同的不同组合来表示一个十六进制数,其中组合来表示一个十六进制数,其中AF 依次表示依次表示1015; 以后缀以后缀H或或h表示十六进制数表示十六进制数Hexadecimal。 任何一个十六进制数可表示为:

5、116nmiiiHHN式中:m为小数位的位数,n为整数位的位数,Hi为第i位上的数符可以是0,1,,9,A,B,C,D,E,F十六个数字符号中的任一个。 例例2.3 0E5AD.BFH =21012316151611161316101651614普通来说,对于基数为的任一数可用多项式表示为: 1nmiiiXXkN(2.1.4) 式中:X为基数,表示X进制;i为位序号;m为小数部分位数;n为整数部分的位数;ki为第i位上的数值,可以为0,1,2,X-1共X个数字符号中任一个;Xi为第i位的权。 2.1.2 各种数制的相互转换各种数制的相互转换 1恣意进制数转换为十进制数恣意进制数转换为十进制数

6、二进制、十六进制以致恣意进制数转换为十进制数的方二进制、十六进制以致恣意进制数转换为十进制数的方法很简单,只需按式法很简单,只需按式2.1.2,2.1.3和和2.1.4各位按权展开即该各位按权展开即该位的数值乘于该位的权求和即可。位的数值乘于该位的权求和即可。 2. 十进制数转换成二进制数十进制数转换成二进制数 1)整数部分的转换整数部分的转换下面经过一个简单的例子对转换方法进展分析。例如,下面经过一个简单的例子对转换方法进展分析。例如, B2B3B0B2B1B0 B3B1012321202121101113BD 可见,要确定13D对应的二进制数,只需从右到左分别确定系数 B0,B1,B2,B

7、3即可。 式(2.1.5)右侧除以2: 商为 ,余数为1,此余数即为B0; 商再除以2: 商为 ,余数为0,此余数即为B1; 商再除以2: 商为 ,余数为1,次余数即为B2; 商再除以2: 商为商为0时停顿 ,余数为1,此余数即为 B3。 012202121012121021 由以上过程可以得出十进制整数部分转换为二进制数的方法:除以基数2取余数,先为低位B0后为高位。 显然,该方法也适用于将十进制整数转换为八进制整数基数为8、十六进制整数基数为16以致其它任何进制整数。 2) 小数部分的转换小数部分的转换同样用一个简单例子阐明十进制小数部分的转换方法。例如,同样用一个简单例子阐明十进制小数部

8、分的转换方法。例如, B-1B-2B-1B-221212111 .075.0BD要将一个十进制小数转换为二进制小数,实践上就是求 B-1,B-2,给式(2.1.6)右侧乘以基数2得: (2.1.6)1211整数部分为B-1小数部分 整数部分为1,此即为B-1。小数部分为12-1。 小数部分再乘以基数2得:整数部分为1,此即为B-2。 此时小数部分已为0,停顿往下计算假设不为0,继续求B-3,B-4,直到小数部分为0或小数部分的位数满足一定精度时为止 。 由以上分析可得到十进制小数部分转换为二进制小数的方法: 小数部分乘以基数2取整数0或1,先为高位B-1后为低位。 显然,该方法也适用于将十进制

9、小数转换为八进制小数基数为8、十六进制小数基数为16以致其它任何进制小数。 例例2.4 将将13.75转换为二进制数。转换为二进制数。 分别将整数和小数部分进展转换:分别将整数和小数部分进展转换: 整数部分:整数部分:13=1101B 小数部分:小数部分:0.75=0.11B 因此,因此,13.75=1101.11B 例例2.5 将将28.75转换为十六进制数转换为十六进制数 整数部分:整数部分:28=1CH 小数部分:,小数部分:,B-1=CH,小数部分已为,小数部分已为0,停顿计算。,停顿计算。 因此,因此,28.75=1C.CH 3二进制数与十六进制数之间的转换 由于24=16,即可用四

10、位二进制数表示一位十六进制数,所以可得到如下所述的二进制数与十六进制数之间的转换方法。 将二进制数转换为十六进制数的方法:以小数点为界,向左整数部分每四位为一组,高位缺乏4位时补0;向右小数部分每四位为一组,低位缺乏4位时补0。然后分别用一个16进制数表示每一组中的4位二进制数。 将十六进制数转换为二进制数的方法:直接将每一位十六进制数写成其对应的四位二进制数。 例例2.6 1101110.01011B=0110,1110.0101,1000B=6E.58H 2F.1BH=10 1111.0001 1011B 2.1.3 二进制数的运算二进制数的运算 1. 二进制数的算术运算二进制数的算术运算

11、 (1) 加加: 0+0=0 0+1=1 1+0=1 1+1=0进进1 (2) 减减: 0-0=0 1-1=0 1-0=1 0-1=1借位借位 (3) 乘乘: 00=0 01=0 10=0 11=1 (4) 除除: 二进制除法是乘法的逆运算。二进制除法是乘法的逆运算。 2. 二进制数的逻辑运算二进制数的逻辑运算 1 “与与“运算运算AND. “与运算又称逻辑乘,与运算又称逻辑乘,可用符号可用符号“或或“表示。运算规那么如下:表示。运算规那么如下:00=0 01=0 10=0 11=1 可以看出,只需当两个变量均为可以看出,只需当两个变量均为“1时,时,“与的结果才与的结果才为为“1。 2 “或

12、运算OR “或运算又称逻辑加,可用符号“或“+表示。运算规那么如下:00=0 01=1 10=1 11=1 可以看出,两个变量只需有一个为“1,“或的结果就为“1。 3 “非运算NOT 变量的“非运算结果用表示。逻辑“非运算规那么如下: 4 “异或运算XOR “异或运算可用符号“表示。运算规那么如下: 可以看出,两变量只需不同,“异或运算的结果就为“1。 10 01 011101110000例例 2.7 A=11110101B, B=00110000B,求,求 ?BABABABABBA00110000BBA11110101BBA11000101BA00001010BB11001111解解2.2

13、 带符号数的表示及运算带符号数的表示及运算 2.2.1 机器数与真值机器数与真值 日常生活中遇到的数,除了上述无符号数外,还有带符号日常生活中遇到的数,除了上述无符号数外,还有带符号数。对于带符号的二进制数,其正负符号如何表示呢?在计算数。对于带符号的二进制数,其正负符号如何表示呢?在计算机中,为了区别正数和负数,通常用二进制数的最高位表示数机中,为了区别正数和负数,通常用二进制数的最高位表示数的符号。对于一个字节型二进制数来说,的符号。对于一个字节型二进制数来说,D7位为符号位,位为符号位,D6D0位为数值位。在符号位中,规定用位为数值位。在符号位中,规定用“0表示正,表示正,“1表示负,而

14、数值位表示该数的数值大小。表示负,而数值位表示该数的数值大小。 把一个数及其符号位在机器中的一组二进制数表示方式,把一个数及其符号位在机器中的一组二进制数表示方式,称为称为“机器数。机器数所表示的值称为该机器数的机器数。机器数所表示的值称为该机器数的“真值。真值。 2.2.2 机器数的表示方法机器数的表示方法 1. 原码原码设数设数x的原码记作的原码记作x原,如机器字长为原,如机器字长为n,那么原码定义如下:,那么原码定义如下: 0) 12(|2120111xxxxxnnn原 在原码表示法中,最高位为符号位正数为0,负数为1,其他数字位表示数的绝对值。 例如,当机器字长n=8时, +0原=00

15、000000B -0原=27+0按定义计算,下同=10000000B +8原=00001000B-8原=27+8=10001000B +127原=01111111B-127原=27+127=11111111B 当机器字长n=16时, +0原=0000000000000000B-0原=215+0=1000000000000000B +8原=0000000000001000B-8原=215+8=1000000000001000B +32767原=0111111111111111B -32767原=215+32767=1111111111111111B 可以看出,原码表示数的范围是。8位二进制原码表

16、示数的范围为-127+127,16位二进制原码表示数的范围为-32767+32767;“0的原码有两种表示法:00000000表示+0,10000000表示-0。 原码表示法简单直观,且与真值的转换很方便,但不便于在计算机中进展加减运算。 如进展两数相加,必需先判别两个数的符号能否一样。 假设一样,那么进展加法运算; 假设不同,那么进展减法运算。 如进展两数相减,必需比较两数的绝对值大小,再由大数减小数,结果的符号要和绝对值大的数的符号一致。 按上述运算方法设计的算术运算电路很复杂。因此,计算机中通常运用补码进展加减运算,这样就引入了反码表示法和补码表示法。 2. 反码反码设数设数x的反码记作

17、的反码记作x反,如机器字长为反,如机器字长为n,那么反码定义如下:,那么反码定义如下: 0) 12(|) 12(12011xxxxxnnn反 正数的反码与其原码一样。例如,当机器字长n=8时: +0反=+0原=00000000B +127反=+127原=01111111B当机器字长n=16时: +8反=+8原=0000000000001000B +127反=+127原=0000000001111111B 负数的反码是在原码根底上,符号位不变仍为1,数值位按位取反。例如,当机器字长n=8时: -0反=(28-1)-0=11111111B -127反=(28-1)-127=10000000B 反码

18、表示数的范围是。8位二进制反码表示数的范围为-127+127,16位二进制反码表示数的范围为-32767+32767;“0的反码有两种表示法:00000000表示+0,11111111表示-0。 3. 补码补码设数设数x的补码记作的补码记作x补,如机器字长为补,如机器字长为n,那么补码定义如下:,那么补码定义如下: 02|212011xxxxxnnn补正数的补码与其原码、反码一样。例如,当机器字长n=8时:+8补=+8反=+8原=00001000B+127补=+127反=+127原=01111111B当机器字长n=16时:+8补=+8反=+8原=0000000000001000B+127补=+

19、127反=+127原=0000000001111111B 负数的补码是在原码根底上,符号位不变仍为1,数值位按位取反,末位加1;或在反码根底上末位加1。例如,当机器字长n=8时:-8原=10001000B-127原=11111111B-8反=11110111B-127反=10000000B-8补=28-8=11111000B-127补=28-127=10000001B可以看出,补码表示数的范围是。8位二进制补码表示数的范围为-128+127,16位二进制反码表示数的范围为-32768+32767。8位二进制数的原码、反码和补码如表2.1所示。 表表2.1 8位二进制数的原码、反码和补码表位二进

20、制数的原码、反码和补码表 0000 0000 二进制数 无符号十进制数带 符 号 数原码反码补码0000 00010000 0010 0111 11100111 11111000 00001000 0001 1111 11011111 11101111 1111012 126127128129 253254255+0+1+2 +126+127-0-1 -125-126-127+0+1+2 +126+127-127-126 -2-1-0+0+1+2 +126+127-128-127 -3-2-12.2.3 真值与机器数之间的转换真值与机器数之间的转换 一原码转换为真值一原码转换为真值 根据原码定

21、义,将原码数值位各位按权展开求和,由符根据原码定义,将原码数值位各位按权展开求和,由符号位决议数的正负即可由原码求出真值。号位决议数的正负即可由原码求出真值。 例例2.8 知知x原原=00011111B,y原原=10011101B,求,求x和和y x = + (026+025+124+123+122+121+120)=31 y = - (026+025+124+123+122+021+120)=-29 2. 反码转换为真值 要求反码的真值,只需先求出反码对应的原码,再按上述原码转换为真值的方法即可求出其真值。 正数的原码是反码本身。 负数的原码可在反码根底上,符号位仍为1不变,数值位按位取反。

22、例2.9 知x反=00001111B,y反=11100101B,求x和y解 x原= x反=00001111B, x = + (026+025+024+123+122+121+120)=15 y原=10011010B, y = - (026+025+124+123+022+121+020)= -26 3. 补码转换为真值补码转换为真值同理,要求补码的真值,也要先求出补码对应的原码。同理,要求补码的真值,也要先求出补码对应的原码。 正数的原码与补码一样。正数的原码与补码一样。 负数的原码可在补码根底上再次求补,即:负数的原码可在补码根底上再次求补,即:补补原xx例例2.10 知知x补补=00001

23、111B,y补补=11100101B,求,求x和和y解解 x原原= x补补=00001111B, x = + (026+025+024+123+122+121+120)=15 y原原= y补补补补 =10011011B, y = - (026+025+124+123+022+121+120)= -27 2.2.4 补码的加减运算补码的加减运算 1. 补码加法补码加法 在计算机中,凡是带符号数一概用补码表示,运算结果自在计算机中,凡是带符号数一概用补码表示,运算结果自然也是补码。其运算特点是:符号位和数值位一同参与运算,然也是补码。其运算特点是:符号位和数值位一同参与运算,并且自动获得结果包括符

24、号位与数值位。并且自动获得结果包括符号位与数值位。 补码加法的运算规那么为:补码加法的运算规那么为:即:两数补码的和等于两数和的补码。即:两数补码的和等于两数和的补码。 补补补yxyx(2.2.5) 例例2.11 知知 +51补补=0011 0011B,+66补补=0100 0010B, -51补补=1100 1101B, -66补补=1011 1110B 求求 +66补补+51补补=?+66补补+-51补补=?-66补补+-51补补=? 解:1 +66补+51补 二进制(补码)加法 十进制加法 0100 0010 + 66补 + 66+) 0011 0011 + 51补 +) + 51 0

25、1 1 1 0 1 0 1 + 1 1 7 补 +117 由于:+66补+51补=(+66)+(+55)补=01110101B 结果为正,因此:(+66)+(+55)原=(+66)+(+55)补=01110101B 其真值为+117,计算结果正确。2 +66补+-51补 二进制(补码)加法 十进制加法 0100 0010 + 66补 +66+) 1100 1101 51补 +) 51 0000 1111 +15补 +151自动丧失由于:+66补+51补=(+66)+(55)补=0000111B 结果为正,因此:(+66)+(55)原=(+66)+(55)补=00001111 其真值为+15,计

26、算结果正确。 3 -66补+-51补 二进制(补码)加法 十进制加法 1011 1110 - 66补 -66+) 1100 1101 51补 +) 51 1000 1011 -117补 -1171自动丧失由于66补+51补=10001011B=(66)+(55)补 结果为负,因此 (66)+(55)原=(66)+(55)补补=11110101B其真值为117,计算结果正确。 可以看出,不论被加数、加数是正数还是负数,只需直接用它们的补码直接相加,当结果不超出补码所表示的范围时,计算结果便是正确的补码方式。但当计算结果超出补码表示范围时,结果就不正确了,这种情况称为溢出。 2. 补码减法补码减法

27、补码减法的运算规那么为:补码减法的运算规那么为: 补补补补补yxyxyx(2.2.6) 例2.12 知+51补=0011 0011B,+66补=0100 0010B51补=1100 1101B,66补=1011 1110B求 +66补+51补=?66补 51补=? 解 +66补 +51补=+66补+51补 66补 51补=66补+51补 二进制(补码)加法 十进制加法 0100 0010 + 66补 +66+) 1100 1101 51补 -) +51 0000 1111 +15补 +151自动丧失 二进制(补码)加法 十进制加法 1011 1110 - 66补 -66+) 0011 0011

28、 +51补 -) -51 1111 0001 -15补 -15 可以看出,无论被减数、减数是正数还是负数,上述补码减法的规那么都是正确的。同样,由最高位向更高位的进位会自动丧失而不影响运算结果的正确性。 计算机中带符号数用补码表示时有如下优点: 可以将减法运算变为加法运算,因此可运用同一个运算器实现加法和减法运算,简化了电路。 无符号数和带符号数的加法运算可以用同一个加法器实现,结果都是正确的。例如: 无符号数 带符号数 11100001 225 31补+) 00001101 +) 13 +) +13补 11101110 238 18补 假设两操作数为无符号数时,计算结果为无符号数111011

29、10B,其真值为238,结果正确;假设两操作数为补码方式,计算结果也为补码方式,11101110B为18的补码,结果也是正确的。 2.2.5 溢出及其判别方法溢出及其判别方法 1. 进位与溢出进位与溢出 所谓进位,是指运算结果的最高位向更高位的进位,用所谓进位,是指运算结果的最高位向更高位的进位,用来判别无符号数运算结果能否超出了计算机所能表示的最大来判别无符号数运算结果能否超出了计算机所能表示的最大无符号数的范围。无符号数的范围。 溢出是指带符号数的补码运算溢出,用来判别带符号数溢出是指带符号数的补码运算溢出,用来判别带符号数补码运算结果能否超出了补码所能表示的范围。例如,字长补码运算结果能

30、否超出了补码所能表示的范围。例如,字长为为n位的带符号数,它能表示的补码范围为位的带符号数,它能表示的补码范围为2n1+2n11,假设运算结果超出此范围,就叫补码溢出,简称溢出。假设运算结果超出此范围,就叫补码溢出,简称溢出。 2. 溢出的判别方法 判别溢出的方法很多,常见的有: 经过参与运算的两个数的符号及运算结果的符号进展判别。 单符号位法。该方法经过符号位和数值部分最高位的进位形状来判别结果能否溢出。 双符号位法,又称为变形补码法。它是经过运算结果的两个符号位的形状来判别结果能否溢出。 上述三种方法中,第种方法仅适用于手工运算时对结果能否溢出的判别,第和两种方法在计算机中都有运用。 本节

31、仅经过详细例子对第种方法做简要引见。 假设符号位进位形状用CF来表示,当符号位向前有进位时,CF=1,否那么,CF=0;数值部分最高位的进位形状用DF来表示,当该位向前有进位时,DF=1,否那么,DF=0。单符号位法就是经过该两位进位形状的异或结果来判别能否溢出的。 (2.2.7) 假设OF=1,阐明结果溢出;假设OF=0,那么结果未溢出。也就是说,当符号位和数值部分最高位同时有进位或同时没有进位时,结果没有溢出,否那么,结果溢出。 DFCFOF 例2.13 设有两个操作数x=01000100B,y=01001000B,将这两个操作数送运算器做加法运算,试问: 假设为无符号数,计算结果能否正确

32、? 假设为带符号补码数,计算结果能否溢出? 解解 无符号数 带符号数 01000100 68 +68补+)01001000 +)72 +) +72补 10001100 140 +140补DF=1CF=0 假设为无符号数,由于CF=0,阐明结果未超出8位无符号数所能表达的数值范围(0255),计算结果10001100B为无符号数,其真值为140,计算结果正确。 假设为带符号数补码,由于CF=1,结果溢出;这里也可经过参与运算的两个数的符号及运算结果的符号进展判别,由于两操作数均为正数,而结果却为负数,因此结果溢出;+68和+72两数补码之和应为+140的补码,而8位带符号数补码所能表达的数值范围

33、为128+127,结果超出该范围,因此结果是错误的。 例2.14 设有两个操作数x=11101110B,y=11001000B,将这两个操作数送运算器做加法运算,试问: 假设为无符号数,计算结果能否正确? 假设为带符号补码数,计算结果能否溢出? 解解 无符号数 带符号数 11101110 238 -18补+)11001000 +)200 +) -56补 10110110 438 -74补DF=1CF=01自动丧失 假设为无符号数,由于CF=1,阐明结果超出8位无符号数所能表达的数值范围(0255)。两操作数11101110B和11001000B对应的无符号数分别为238和200,两数之和应为4

34、38255,因此,计算结果是错误的。 假设为带符号数补码,由于CF=0,结果未溢出。两操作数11101110B和11001000B分别为18和56的补码,其结果应为74的补码方式,而计算结果10110110B正是74的补码,因此结果正确。 2.3 信信 息息 的的 编编 码码 2.3.1 二进制编码的十进制数编码二进制编码的十进制数编码(BCD编码编码) 虽然二进制数对计算机来说是最正确的数制,但是人们虽然二进制数对计算机来说是最正确的数制,但是人们却不习惯运用它。为理处理这一矛盾,人们提出了一个比较适却不习惯运用它。为理处理这一矛盾,人们提出了一个比较适宜于十进制系统的二进制编码的特殊方式,

35、即将宜于十进制系统的二进制编码的特殊方式,即将1位十进制的位十进制的09这这10个数字分别用个数字分别用4位二进制码的组合来表示,在此根底位二进制码的组合来表示,在此根底上可按位对恣意十进制数进展编码。这就是二进制编码的十进上可按位对恣意十进制数进展编码。这就是二进制编码的十进制数,简称制数,简称BCD码码(Binary-Coded Decimal)。 4位二进制数码有16种组合(00001111),原那么上可任选其中的10个来分别代表十进制中09这10个数字。但为了便于记忆,最常用的是8421 BCD码,这种编码从00001111这16种组合中选择前10个即00001001来分别代表十进制数

36、码09,8、4、2、1分别是这种编码从高位到低位每位的权值。BCD码有两种方式,即紧缩型BCD码和非紧缩型BCD码。 1紧缩型BCD码 紧缩型BCD码用一个字节表示两位十进制数。例如,10000110B表示十进制数86。 2非紧缩型BCD码 非紧缩型BCD码用一个字节表示一位十进制数。高4位总是0000,低4位用00001001中的一种组合来表示09中的某一个十进制数。 表表2.2 8421 BCD 码部分编码表码部分编码表 十进制数紧缩型BCD码非紧缩型BCD码123910111920210000000100000010000000110000100100010000000100010001

37、10010010000000100001000000010000001000000011 0000100100000001 0000000000000001 00000001 00000001 0000100100000010 0000000000000010 00000001 需求阐明的是,虽然BCD码可以简化人机联络,但它比纯二进制编码效率低,对同一个给定的十进制数,用BCD码表示时需求的位数比用纯二进制码多,而且用BCD码进展运算所花的时间也要更多,计算过程更复杂,由于BCD码是将每个十进制数用一组4位二进制数来表示,假设将这种BCD码送计算机进展运算,由于计算机总是将数当作二进制数来运

38、算,所以结果能够出错,因此需求对计算结果进展必要的修正,才干使结果为正确的BCD码方式。详见本小节例2.17。 例2.15 十进制数与BCD数相互转换。 将十进制数69.81转换为紧缩型BCD数: 69.81=(0110 1001.1000 0001)BCD 将BCD数1000 1001.0110 1001转换为十进制数:(1000 1001.0110 1001)BCD=89.69 例2.16 设有变量x等于10010110B,当该变量分别为无符号数、原码、补码、紧缩型BCD码时,试分别计算变量x所代表的数值大小。解 无符号数:x=10010110B=127+026+025+124+023+1

39、22+121+020=150原码:x原=10010110B x= 026+025+124+023+122+121+020= 22补码:x补=10010110B x原=x补补=11101010B x= 126+125+024+123+022+121+020= 106BCD码:xBCD=10010110B x=96 例2.17 (BCD码运算时的修正问题)用BCD码求38+49。 解 0011 1000 38的BCD码+) 0100 1001 49的BCD码 1000 0001 81的BCD码 计算结果1000 0001是81的BCD数,而正确结果应为87的BCD数1000 0111,因此结果是错

40、误的。其缘由是,十进制数相加应该是“逢十进一,而计算机按二进制数运算,每4位为一组,低4位向高4位进位与十六进制数低位向高位进位的情况相当,是“逢十六进一,所以当相加结果超越9时将比正确结果少6,因此结果出错。处理方法是对二进制加法运算结果采用“加6修正,从而将二进制加法运算的结果修正为BCD码加法运算结果。BCD数相加时,对二进制加法运算结果修正的规那么如下: 假设两个对应位BCD数相加的结果向高位无进位,且结果小于或等于9,那么该位不需求修正;假设得到的结果大于9而小于16,那么该位需求加6修正。 假设两个对应位BCD数相加的结果向高位有进位(结果大于或等于16),那么该位需求进展加6修正

41、。 因此,两个BCD数进展运算时,首先按二进制数进展运算,然后必需用相应的调整指令进展调整,从而得到正确的BCD码结果。有关BCD运算结果的调整指令将在第4章“80 x86指令系统中引见。 2.3.2 ASCII字符编码字符编码 所谓字符,是指数字、字母以及其他一些符号的总称。所谓字符,是指数字、字母以及其他一些符号的总称。 现代计算机不仅用于处置数值领域的问题,而且要处置大现代计算机不仅用于处置数值领域的问题,而且要处置大量的非数值领域的问题。这样一来,必然需求计算机能对数字、量的非数值领域的问题。这样一来,必然需求计算机能对数字、字母、文字以及其他一些符号进展识别和处置,而计算机只能字母、

42、文字以及其他一些符号进展识别和处置,而计算机只能处置二进制数,因此,经过输入处置二进制数,因此,经过输入/输出设备进展人机交换信息时输出设备进展人机交换信息时运用的各种字符也必需按某种规那么,用二进制数码运用的各种字符也必需按某种规那么,用二进制数码0和和1来编来编码,计算机才干进展识别与处置。码,计算机才干进展识别与处置。 目前,国际上运用的字符编码系统有许多种。在微机、通讯设备和仪器仪表中广泛运用的是ASCII码(American Standard Code for Information Interchange)美国规范信息交换码。ASCII码用一个字节来表示一个字符,采用7位二进制代码

43、来对字符进展编码,最高位普通用做校验位。7位ASCII码能表示27=128种不同的字符,其中包括数码(09),英文大、小写字母,标点符号及控制字符等,见表2.3。 该表的运用方法读者应熟练掌握。如数字“1的ASCII码值为31H,字母“A的ASCII码值为41H,符号“?的ASCII码值为3FH等。 表表2.3 美国规范信息交换码美国规范信息交换码ASCII(7位代码位代码) 2.4 数的定点与浮点表示法数的定点与浮点表示法 2.4.1 定点表示定点表示 所谓定点表示法,是指小数点在数中的位置是固定的。原理所谓定点表示法,是指小数点在数中的位置是固定的。原理上讲,小数点的位置固定在哪一位都是可

44、以的,但通常将数据表上讲,小数点的位置固定在哪一位都是可以的,但通常将数据表示成纯小数或纯整数方式,如图示成纯小数或纯整数方式,如图2.1所示。所示。符号位数值位小数点(a)符号位数值位小数点(b)图2.1 定点数的两种表示方法(a) 纯小数方式;(b) 纯整数方式 设用一个n+1位字来表示一个数x,其中一位表示符号位(0表示正,1表示负),其他n位为数值位。对于纯小数表示法,所能表示的数x (原码表示,下同)的范围为:(12n)x12n (2.4.1) 它能表示的数的最大绝对值为12n,最小绝对值为2n。 对于纯整数表示法,所能表示的数x的范围为:(2n1)x2n 1 (2.4.2)它能表示

45、的数的最大绝对值为2n1,最小绝对值为1。 定点表示法存在的问题: 由于实践任务中很少遇到数据都是纯小数或纯整数的情况,所以定点表示法要求程序员做的一件重要任务是为要计算的问题选择“比例因子。一切原始数据都要用比例因子化成纯小数或纯整数方式,计算结果又要用比例因子恢复实践值。这一过程不仅占用资源,有时为了选择适当的比例因子以免结果溢出,需求反复多次调整比例因子,而且比例因子也需求占用一定的存储空间。 2.4.2 浮点表示浮点表示 所谓浮点表示法,就是小数点在数中的位置是浮动的。所谓浮点表示法,就是小数点在数中的位置是浮动的。 恣意一个二进制数恣意一个二进制数x总可以写成如下方式:总可以写成如下

46、方式: (2.4.3)其中,其中,d称为尾数,是二进制纯小数,指明数的全部有效数字,前称为尾数,是二进制纯小数,指明数的全部有效数字,前面的符号称为数符,表示数的符号,用尾数前的一位表示,该位为面的符号称为数符,表示数的符号,用尾数前的一位表示,该位为0,阐明该浮点数为正,该位为,阐明该浮点数为正,该位为1,阐明该浮点数为负;,阐明该浮点数为负;p称为阶码,称为阶码,它前面的符号称为阶符,用阶码前一位表示,阶码为正时,用它前面的符号称为阶符,用阶码前一位表示,阶码为正时,用0表表示,阶码为负时,用示,阶码为负时,用1表示。浮点数的编码格式如下图。表示。浮点数的编码格式如下图。 阶符阶 码( p

47、)数符尾 数( d)1位m位1位n位 可以看出,将尾数d的小数点向右(阶码p为正时)或向左(阶码p为负时)挪动p位,即可得到该浮点数表示的数值x。阶码p指明小数点的位置,小数点随着阶码的大小和正负而浮动,因此把这种数称为浮点数。 设阶码的位数为m位,尾数的位数为n位,那么该浮点数表示的数值范围为:(2.4.4) 在字长一样的情况下,浮点数能表示的数值范围比定点数大得多,且精度高,但浮点运算规那么复杂。)12()12(2)21 (|22mmnnx例. 1100.11的浮点数表示是0.11001124 解:尾数为110011,数符为0;阶码为3bit(100),阶符为0。 小数点每左移1位,那么阶

48、码p加1; 小数点每右移1位,那么阶码p减1。例:设浮点数的阶码部分3bit,其中阶码为2bit,阶符为1bit; 尾数部分为5bit,其中尾符为1bit,尾数为4bit。 假设此数表示为 -23 13D,其二进制表示为 211 -1101, 那么在计算机中相应的表示方式如下: 0 1 1 1 1 1 0 1阶符阶 码( p)数符尾 数( d)1位m位1位n位小小 结结一、进位计数制及其表示方法一、进位计数制及其表示方法一、进位计数制及其要素:一、进位计数制及其要素: 进位计数制:按进位原那么进展计数的进位计数制:按进位原那么进展计数的方法。方法。例:十进制数有例:十进制数有 : 0、1、2、

49、3、4、5、6、7、8、9十种十种形状。形状。我们说:十进制数基数我们说:十进制数基数10,变化范围,变化范围010-1, 逢十进一。逢十进一。看一个十进制数:看一个十进制数: 4 0 9 4 每一位十种数码的形状每一位十种数码的形状(09) 千千 百百 十十 个个 本位绝对值的大小本位绝对值的大小=数数位权位权 103102101100 如:千位如:千位= 4103=4000十进制数有二个要素:十进制数有二个要素: 1. 基数:十基数:十 每一位每一位 0、1、2、3、4、5、6、7、8、10-1 逢逢 十十 进进 一。一。 2. 位权:位权:10i 某一位数绝对值大小某一位数绝对值大小 =

50、 数数位权位权.二个要素二个要素: 适用于二、八、十六进制。适用于二、八、十六进制。二进制数:基数二进制数:基数2 位权位权2i 八进制数:基数八进制数:基数8 位权位权8i 十六进制数十六进制数: 基数基数16 位权位权16i二、二、 进位计数制的表示方法:进位计数制的表示方法: 123456= 1 103+2 102+3 101+4 100+5 10-1+6 10-2推行到普通方式恣意十进制:推行到普通方式恣意十进制: N=k n 10n+k n-1 10 n-1+k0 100 +k-1 10-1+ +k-m 10-m = k i 10i (i= -mn)任何某一位数大小任何某一位数大小

51、= k i 10i对于恣意进制对于恣意进制: N= k i R i(i=-mn)R 基数基数 , 逢逢R进一进一. Ri 位权位权例如:二进制数例如:二进制数 B=10011101 B=1 27+1 24+1 23+1 22+1 20 =15710 在计算机里进展运算和处置均是按二进制数处置的。在计算机里进展运算和处置均是按二进制数处置的。而二进制数写起来费事而二进制数写起来费事;书写时又以八进制或十六进制表示;书写时又以八进制或十六进制表示;日常生活中又常用十进制,日常生活中又常用十进制,因此就有:二因此就有:二 十十 八八 十十 二二 八八 数制之间转换问题数制之间转换问题 十六十六 十十

52、 二二 十六十六二、二、 数制之间的转换:数制之间的转换:一、一、 十十 二二整数整数 十十 二二 除除2取余法,降幂法取余法,降幂法1除除2取余法取余法 21710=k n 2n+ k n-1 2 n-1+ k1 21 +k0 20 = 2(k n 2 n-1+k n-1 2 n-2+k1 20)+k02(k n 2 n-1+k n-1 2 n-2+k 1 20) 是是2的倍数的倍数k0 是余数是余数.217102 -得到余数得到余数k0 /2 整数整数 商商 余数:余数: 按照相反的方向写下来。按照相反的方向写下来。 /2 /2 /2 /2 /2 /2 /2 /2217 108 54 27

53、 13 6 3 1 0 -商商 1 0 0 1 1 0 1 1 余数余数(217) 10=110110012书写方向书写方向2=0. 60937510 (0.616)10 2=1.232 k-6=1 (0.613)10=(0.1001)2 k-7=0 3. 二二十十 同样可以用公式进展同样可以用公式进展0. 10012 =1 2-1+1 2-4=0. 5+0. 0625=0. 5625100.100112=1 2-1+1 2-4+1 2-5+1 2-6 =0. 60937510看一下常用的几种数制写法:八位二进制数看一下常用的几种数制写法:八位二进制数 十进制十进制 二进制二进制 八进制八进制

54、 十六进制十六进制 BCD 0 0 0 0 0 1 1 1 1 12 10 2 2 103 11 3 3 114 100 4 4 1005 101 5 5 1016 110 6 6 1107 111 7 7 1118 1000 10 8 10009 1001 11 9 100110 1010 12 A 1000011 1011 13 B 1000112 1100 14 C 1001013 1101 15 D 1001114 1110 16 E 1010015 1111 17 F 1010116 10000 20 10 10110. . . 11 . . . 12 . . . . . (255)

55、D 11111111B 377Q FFH (10,0101,0101)BCD二、二、 二二 八,二八,二 十六,二十六,二 BCD之之间转换间转换 1、二二 八八 二二 八:八:以小数点为界向左向右三位一段,不够补以小数点为界向左向右三位一段,不够补0,三位二进制数用一位八进制数表示。三位二进制数用一位八进制数表示。例:例: 1,101,001.010,011,1 2 不够补不够补0 不够补不够补0 001 101 001. 010 011 1002=151.2348 八八二:二: 一位八进制数用三位二进制数表示一位八进制数用三位二进制数表示. 1512348=001 101 001. 010

56、 011 10022、二、二 十六:十六: 二二十六:十六:以小数点为界向左向右四位一段,以小数点为界向左向右四位一段, 不够不够补补0, 四位二进制数用一位十六进制数表示。四位二进制数用一位十六进制数表示。例:例: 110 1001.0100 111 2 ( 69.4E )16 不够补不够补0 不够补不够补0(0 1 1 0,1 0 0 1 . 0 1 0 0,1 1 1 0)2=(69 . 4E)16 十六十六二:一位十六进制数用四位二进制二:一位十六进制数用四位二进制数表示。数表示。例:例: (69 . 4E)16 = (0 1 1 0,1 0 0 1 . 0 1 0 0,1 1 1 0

57、)23、 二二 BCDBCD数:数:常用常用8421码,每一位十进制数用四位二进制编码,每一位十进制数用四位二进制编码表示。码表示。 1111B9D1001BCD 10D 0001 0000BCDBCD码与二进制数之间转换没有直接关系,码与二进制数之间转换没有直接关系,必需先转换成十进制必需先转换成十进制,然后转换成二进制。然后转换成二进制。例:例:1111111B=255D=0010,0101,0101BCD0010,0101,0101BCD255D=1111 1111B三字和各种字符的编码三字和各种字符的编码 ASC编码编码 字和各种字符按照特定规那么用二进制编码字和各种字符按照特定规那么

58、用二进制编码在机器中表示。编码有各种方式:在机器中表示。编码有各种方式:目前规定在微型机中最普遍采用目前规定在微型机中最普遍采用ASC码码American Standard Code for Information Interchange ) 美国规范信息交换码。美国规范信息交换码。参看参看 P15 ASC码表。码表。一二进制数的运算一二进制数的运算 (二带符号数的表示二带符号数的表示ASC码码: 采用七位二进制编码,可以表示采用七位二进制编码,可以表示128个个字符。字符。 bit7作奇偶校验位,在机器中表示时,作奇偶校验位,在机器中表示时,常以为常以为“0, 用一个字节用一个字节8位表示一

59、个位表示一个ASC字字符。符。常用的常用的ASC字符:字符:09 的的ASC码码30H39HAZ 的的ASC码码41H5AH az 的的ASC码码61H7AH一二进制数的运算自学一二进制数的运算自学P3-P7 二带符号数的表示二带符号数的表示 1. 机器数与真值机器数与真值 2. 原码原码 3. 反码反码 4. 补码补码 上面提到的是一种无符号数,上面提到的是一种无符号数,机器数中会有正有负。符号怎样表示呢?机器数中会有正有负。符号怎样表示呢?通常数的最高位为符号位,对于字长通常数的最高位为符号位,对于字长8位机器数:位机器数: D7为符号位为符号位: 0表示表示“+,1表示表示“。符号数码。

60、符号数码化了。化了。 D6D0为数字位。为数字位。如如: X=010110112=+91 X=110110112= - 91连同符号位在一同作为一个数称为机器数,连同符号位在一同作为一个数称为机器数,机器数的数值称为真值。机器数的数值称为真值。如如: N1=+ 1011011 N2= - 1011011 为真值为真值0 1011011 1 101 1011 为机器数为机器数符号数码化了,对数据进展运算时,符号位应如何处置?符号数码化了,对数据进展运算时,符号位应如何处置?把符号位和数值位一同编码:原码,反码,补码。把符号位和数值位一同编码:原码,反码,补码。 2. 原码:原码:正数符号位用正数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论