《计算机中的数.ppt》由会员分享,可在线阅读,更多相关《计算机中的数.ppt(55页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第2章,数的表示与运算,本章主要内容,2.1 数和数制,1、计数制数制也称为计数制是指用一组固定的数字符号和统一的规则表示数的方法。对于任意r进制数,可以用下式表示:,2.1.1 数制的表示,2.1.1 数制的表示,ai为数码,每一种进制数都有固定的数字符号,这个符号就是数码。i为数位,数位是指数码在一个数中所处的位置。r为基数,基数是指在某计数制中,每个数位上能使用的数码的个数。ri为权,权是基数的幂,这个幂次由数位决定。例如十进制数据 56.28=5101 + 6100 + 210-1 + 810-2,2.1.1 数制的表示,2、计算机中常用的计数制在日常生活中,人们最常用的是十进制计数制
2、; 计算机中,为了便于数的存储和表示,使用的是二进制计数制;由于二进制数据书写和记忆不方便,在计算机系统中还常使用八进制和十六进制等计数制。,注:为了便于计算机识别,汇编程序规定,当十六进制数的首字符为字母时,前面加数字0。,2.1.1 数制的表示,2.1.2 数制之间的转换,1、其他数制转为十进制数:方法:按权展开,每位数字乘以其权所得到的乘积之和即为其所表示的数的值。,2.1.2 数制之间的转换,【例】将1010.101B、23.4Q和56.78H转换成十进制。解:1010.101B 123 + 022 +121 + 020 +121 + 022 +123 10.625D23.4Q 2 8
3、1 + 3 80 + 4 81 19.5D0FA3.4H 15 162 + 10 161 + 3 160 + 4 161 4003.25D,2.1.2 数制之间的转换,2、十进制数转换为其它数制数把十进制数转换为其它数制数的方法很多,通常采用的方法有降幂法及乘除法。降幂法假设要转换的十进制数为N,找出最接近N并小于等于N的r进制位权值ri;N=NCri,(C0且Nri);记录这个C,作为i位的位码ai; i=i1,得到下一个位权值ri;重复2、3、4 ,直至N为0或达到所需精度。,2.1.2 数制之间的转换,2、十进制数转换为其它数制数乘除法整数部分: 除以基数取余,直至商为0;小数部分: 乘
4、以基数取整,直至积为整数或小数位数由精度定。,【例】把十进制数117.8125转换成二进制数,转换结果 : 117.8125D=1110101.1101B,【例】把十进制数117.8125转换成二进制数。,转换结果 : 117.8125D=1110101.1101B,【例】把十进制数48956转换成十六进制数,转换结果 :48956D= BF3CH,【例】把十进制数48956转换成十六进制数,转换结果 :48956D= BF3CH,2.1.2 数制之间的转换,3、其它数制之间的转换二进制与八进制数之间的转换由于八进制数以23为基数,所以3位二进制数对应1位八进制数,对应关系如下所示。二进制数转
5、换为八进制数时,以小数点为界,整数部分向左,小数部分向右,每3位二进制数为一组,用1位八进制数表示,不足三位的,整数部分高位补0,小数部分低位补0。八进制数转换为二进制数采用与上述方法相反的方法,把每位八进制数用3位二进制数表示即可。,【例】把数11010.101B转换为八进制数。11010.101B 011 010 .101B 32.5Q【例】把数34.56Q转换为二进制数。34.56Q 011 100.101 110B 11100.101B,2.1.2 数制之间的转换,二进制与十六进制数之间的转换:由于十六进制数以24为基数,所以4位二进制数对应1位十六进制数,对应关系如下表所示。转换方法
6、和二进制与八进制数之间的转换方法类似,区别是,这里为4位一组。,【例】把二进制数11010.101B转换为十六进制数。11010.101B 0001 1010.1010B 15.AH【例】把十六进制数56.78H转换为二进制数。56.78H 0101 0110.0111 1000B 1010110.01111B,2.1.3 二进制数的运算,算术运算加法规则:逢二进一。即: 0 + 0 0; 1 + 0 1; 0 + 1 1; 1 + 1 10;减法规则:借一当二。即: 0 0 0; 1 0 1; 0 1 1; 1 1 0;乘法规则:任何数乘以0得0,1乘以任何数得该数。即: 0 00; 0 1
7、0; 1 00; 1 11;除法规则:0除以任何数得0,任何数除以1得该数,除数不得为0。即: 010 ; 111 。,2.1.3 二进制数的运算,逻辑运算,“与”运算(AND) “或”运算(OR) A B AB A B AB 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 0 1 1 1 1 1 1 1“非”运算(NOT) “异或”运算(XOR) A A A B AB 0 1 0 0 0 1 0 0 1 1 1 0 1 1 1 0,2.1.3 二进制数的运算,逻辑运算【例】多位二进制算术运算。 1010 1010B + 0101 1101B 1 0000 0111B 1010
8、 1010B0101 1101B 0100 1101B【例】多位二进制逻辑运算。 1010 1010B 0101 1101B 0000 1000B 1010 1010B 0101 1101B 1111 1111B 1010 1010B 0101 1101B 1111 0111B,2.1.3 二进制数的运算,补充1:十六进制数的算术运算十六进制数进行算术运算时逢十六进一,借一为十六;例如:,05C3H + 3D25H ? 3D25H - 05C3H ?,加法:两个一位数之和为S,若S=16,结果用S-16取代S,并进位1。,减法:于十进制相似,够减时直接相减,不够时服从向高位进1为16的规则。,
9、2.1.3 二进制数的运算,补充2:十六进制数的逻辑运算十六进制数运算时转换成二进制数,按位进行操作;例如:05C3H 3D25H = 0000 0110 1100 0011B 0011 1101 0010 0101B = 0000 0000 0000 0001B = 0001H,2.2带符号二进制数的表示与运算,数分为带符号数和无符号数两种类型;无符号数不分正负,表示无符号数的各二进制数位都是数值位;带符号数有正数和负数之分。在计算机中,用0或1来表示数的正负。在计算机中,一个数连同其符号在内的数值化的表示形式称为机器数。一般用最高位表示数的符号。而这个数本身的值称为真值。机器数可以用不同编
10、码方法表示。常用的编码方式有:原码、反码和补码。,2.2.1带符号二进制数的表示,1、原码表示法:符号 + 绝对值最高位表示符号(正数用0,负数用1)其他位表示数值位数x的原码记作x原 ,如机器字长为n,则原码的定义如下:,1、原码,例如当机器字长n8时, +0D原 0000 0000 , 0D原 1000 0000 +1D原 0000 0001 , 1D原 1000 0001 +45D原 0010 1101 ,45D原 1010 1101 +127D原 0111 1111 , 127D原 1111 1111 0 的表示不惟一,1、原码,按照定义,设n为字长,则原码能表示的整数范围是:(2n-
11、11)+(2n-11);例如:8位二进制原码表示的整数范围是 127D+127D;16位二进制原码表示的整数范围是 32767D+32767D。,2、反码,反码表示法:一个正数的反码和原码相同;一个负数的反码的符号位与其原码的符号位相同,其余位通过将其原码的数值部分按位求反得到。数x的反码记作x反 ,如机器字长为n,则反码的定义如下:,2、反码,例如当机器字长n8时, +0D反0000 0000 , 0D反1111 1111 +1D反0000 0001 , 1D反1111 1110 +45D反0010 1101 , 45D反1101 0010 +127D反0111 1111 , 127D反10
12、00 0000 0 的表示不惟一,2、反码,按照定义,设n为字长,则反码能表示的整数范围是:(2n-11)+(2n-11);例如:8位二进制反码表示的整数范围是 127D+127D;16位二进制反码表示的整数范围是 32767D+32767D。,3、补码,补码表示法:一个正数的补码和反码、原码相同;一个负数的补码的符号位与其原码的符号位相同,其余位可通过将其反码数值部分加1得到。 数x的补码记作x补 ,如机器字长为n,则补码的定义如下:,3、补码,例如当机器字长n8时, +0D补0000 0000 , 0D补0000 0000 +1D补0000 0001 , 1D补1111 1111 +45D
13、补0010 1101 , 45D补1101 0011 +127D补0111 1111 , 127D补1000 0001 0 的表示惟一,3、补码,按照定义,设n为字长,则补码能表示的整数范围是:2n-1+(2n-11);例如:8位二进制补码表示的整数范围是 128D+127D;16位二进制补码表示的整数范围是 32768D+32767D。 补码比原码、反码所能表示的数的范围大,数0的补码只有一种表示形式,是计算机中采用的带符号数的编码方式。,2.2.2带符号二进制数的运算,1、补码运算规则采用补码表示的带符号数,其符号位和数值位同时参与运算,运算结果仍然是补码;任何两数相加,无论正负,只要把它
14、们的补码相加即可;任何两数相减,无论正负,只要把减数相反数的补码与被减数的补码相加即可;运算公式如下:x + y补 x补 + y补 x y补 x补 + y补 从上面的公式可以看出,补码的减法运算可以转换成加法来完成的,因此,在计算机中利用加法器就可以实现补码的加法和减法运算。,由于计算机的字长有限,因此,所能表示的数是有范围的。例如8位二进制补码表示的整数范围是 128D+127D;当运算结果超过这个范围时,运算结果将出错,这种情况称为溢出。产生溢出的原因是数值的有效位占据了符号位。,2、补码运算的溢出问题,由于计算机的字长有限,因此,所能表示的数是有范围的。当运算结果超过这个范围时,运算结果
15、将出错,这种情况称为溢出。溢出一般会造成结果出错。而由于运算结果超出了位数,最高有效位会向前产生一个进位,这个进位自然丢失,一般不表示结果的对错;产生溢出的原因是数值的有效位占据了符号位。,利用符号位判别若两个同号数相加,结果的符号位与之相反,则溢出;若两个异号数相减,结果的符号位与减数相同,则溢出;若两个异号数相加或两个同号数相减,则不溢出。利用运算过程中的进位产生情况判别若次高位(最高数值位)和最高位(符号位)不同时产生进位或借位,则溢出;若次高位(最高数值位)和最高位(符号位)都产生进位或借位,则不溢出。,【例】当字长为8位时,计算-64D+64D。,本例中运算结果为0,根据定义,在8位
16、补码的表示范围128D+127D之内,不会溢出。利用符号位判别:两个异号数相加不溢出。利用进位判别:次高位和最高位都产生了进位,不溢出。,【例】当字长为8位时,计算127D+1D。,本例中运算结果为128,根据定义,超出了8位补码的表示范围128D+127D,溢出。利用符号位判别:两个正数相加,结果是负数,溢出。利用进位判别:次高位向前有进位,而最高位没有产生进位,溢出。,2.3二进制编码的十进制数,2.3.1 BCD码的编码方法在计算机内部采用二进制形式表示数,但人们习惯使用十进制数。BCD码,是二进制编码的十进制数的简称,是为了便于人机交往而设计的一种数字编码。BCD码的编码规则是:用4位
17、二进制数字表示一位十进制数字。在十进制数码与4位二进制编码表示的数之间选择不同的对应规律,就可以得到不同形式的编码。常用的BCD码有:8421BCD码、余3码、格雷码等。8086微型计算机中支持8421BCD码的运算。,1、8421BCD码的编码规则,8421BCD码的4位二进制数码的位权分别是:8,4,2,1。8421BCD码的名称也就是由此而来。将每位数码与对应的权相乘求和,就是它代表的十进制的数值。十进制数与8421BCD码的对应关系如下表所示:,1、8421BCD码的编码规则,8421BCD码的优点:十进制数的每一位表示法与该数的二进制形式一样,容易识别。8421BCD码的缺点:101
18、01111这6个编码没有用到,是无意义的编码。运算结果如果落到这6个编码的范围内时,需要经过转换后,才能得到正确的结果。这种转换,在80 x86微型计算机中,可以通过十进制调整指令来实现。,2、8421BCD码的格式,BCD码有两种格式:压缩8421BCD码(组合8421BCD码)用4位二进制数表示1位十进制数,一个字节可以表示两位十进制数。例如:96D的压缩8421BCD码表示形式是: 1001 0110。非压缩8421BCD码(非组合8421BCD码)用一个字节的低4位表示1位十进制数,高4位任意,通常设为0000,一个字节只表示一位十进制数。例如:96D的非压缩8421BCD码表示形式是
19、: 0000 1001 0000 0110。,2.3.2 BCD码的加减运算,1、压缩8421BCD码的加减运算参与运算的操作数为压缩8421BCD码;结果也是压缩8421BCD码。【例】计算用压缩8421BCD码表示的两个十进制数16和18的和。第一步:做加法。16D=00010110BCD,18D=00011000BCD。运算过程如下:,【例】,第二步:分析上式运算结果,进行十进制调整。结果分析:16D18D=34D,用压缩8421BCD码进行加法运算,结果应为00110100BCD。但上式运算的结果是0010 1110,其中的低位1110不是有效的压缩8421BCD码。原因分析:采用压缩
20、8421BCD码运算时,运算器仍然进行的是二进制数的运算,采用的进位规则不是十进制运算规定的逢十进一。对应到本例中,就是个位上6和8相加,结果是14,大于9了,应该向十位有个进位(逢十进一),但是实际这一进位并没有产生。,【例】,解决的办法:将出错的那一位压缩8421BCD码与6相加。相加后如果产生进位,则该进位应该加到压缩8421BCD码的高位。,【例】,计算用压缩8421BCD码表示的两个十进制数39和98的和。解:39D=00111001BCD,98D=10011000BCD。,【例】,计算用压缩8421BCD码表示的两个十进制数35和16的差。解:35D=00110101BCD,16D
21、=00010110BCD。,压缩8421BCD数运算的十进制调整规则,加法运算后的十进制调整规则若加法和的个位大于9或向十位有进位,则需要“加6调整”。即,所得和要加上00000110BCD;若加法和的十位大于9或向百位有进位,则需要“加60调整”。即,所得和要加上01100000BCD。减法运算后的十进制调整规则若减法差的个位大于9或向十位有借位,则需要“减6调整”。即,所得和要减去00000110BCD;若减法差的十位大于9或向百位有进位,则需要“减60调整”即,所得和要减去01100000BCD。,2、非压缩8421BCD码的加减运算,参与运算的操作数为非压缩8421BCD码;结果也是非
22、压缩8421BCD码。【例】计算用非压缩8421BCD码表示的两个十进制数8和7的和。,【例】,计算用非压缩8421BCD码表示的两个十进制数9和8相加。解:,2.4 无符号整数,在某些情况下,要处理的数全是正数,此时就没有必要再保留符号位了。可以把最高有效位也作为数值位,这样的数称为无符号数。8位无符号数的表数范围是:0255D;16位无符号数的表数范围是:065535D。在计算机中,无符号数常用来表示地址。带符号数与无符号数的处理是不一样的,要注意区分。,2.5 字符的表示法,在计算机中处理的信息并不全是数,还有字符或字符串。例如,姓名、编号等信息。因此,计算机必须能表示和处理字符。80
23、x86系列计算机中采用美国标准信息交换代码ASCII(American Standard Code for Information Interchange)来表示一个字符。,ASCII,标准ASCII码用7位二进制数编码,共有128个。 计算机存储器基本单位为8位,ASCII码最高位通常为0,通信时,最高位用作奇偶校验位。ASCII码表中的前32个和最后1个编码是不能显示的控制字符,用于表示某种操作。ASCII码表中20H后的94个编码是可显示和打印的字符,其中包括数码09,英文字母,标点符号等。字符的ASCII值可以看作字符的码值,如字符“A”的ASCII值为41H,“Z”的ASCII值为5AH,利用这个值的大小可以将字符排序,以后我们会遇到字符串大小比较,实际上是比较ASCII码值的大小。,