资源描述:
《编程基础:数制转换》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1.1数制转换由于计算机中的信息以二进制表示,而人机交互时需要以十进制或英他形式表示,在计算机工作过程中不对避免地需要对不同数制的数值进行表示方式的转换。本节主要介绍数制的基木概念和不同数制之间的转换方法,以及非数字信息的机内表示。1.2.1进位计数制人们最熟悉、使用最多的是十进制数,其特点是用o,1,2,…,9十个不同的符号表示一个数,逢十进一。但在日常生活中也会遇到各种不同进制的数。例如,钟表的指针转一周走过12个刻度,逢十二进一;一天有24个小时,过去一天就要从0开始计算,逢二十四进一。它们分别使用十二进制和二十四进制。在计算机内部使
2、用的是二进制,为了书写和表示的方便也采用八进制和十六进制。无论哪种数制,其共同Z处都是通过进位的方式实现计数。任何一种计数制,都符合以卜•三个规则:(1)数码个数:n进制数使用n个数码。十进制含10个数码:0〜9;二进制含2个数码:0,1。(2)进位规则:n进制逢n进一。十进制为逢十进一;二进制为逢二进一等。(3)每一个数位上数码所具有的权:权为n的抵。十进制数码各位的权是以10为底的幕,二进制数码各位的权是以2为底的幕。由于不同位上的权值不同,因此同一数码在不同的位置上,其表示的值也不同。例如十进数926.8,百位上的9表示900,十位上
3、的2表示20,个位上的6表示6,而小数点后的8表示0.8。由此可见,同一数字的值随着其所在位置而异,这种表示法统称为位置表示法。这样,数926.8的值为9X10,+2X1C/+6X10°+8X10_1其中,10〈1010°、10"称为权。对于任何一个十进数N,都可以表示成按权展开的多项式:N=dnx10n+do-iX10n_l+—+diXlO'+doX10°+d-iX10+d-.X10"严=工diXlO1i=n其中,山是0—9十个数字中的任意一个,叭n是正整数,10被称为
4、•进制数的基数,它是相邻数位的权之比。一般而言,对于用R进制表示的
5、数N(R为任意正整数),可以按权展开为:N二KnXRn+K„-iXRn_1+-+KiXRl+K0XR°+K-iXR_1+-+K-„,XR-m一〃]=为KiXR1i=n其中,Kj是0,1,-,(R-1)个数字中的任意一个,m、n是正整数,R是基数。表1.2列出了计算机中常用的四种进位计数制。其中十六进制中的A,B,C,D,E和F分别相当于十进制中10,11,12,13,14和15的值。表1.2计算机中常用的四种进位计数制进位制二进制八进制十进制十六进制规则逢二进-借一当二逢八进-借•当八逢十进■借一当十逢十六进-借一当十六基数R=2R=8R=
6、l()R=16数符0,10,1,2,...,70,1,2,...,90,1,2,...,9A,B,CQ,E,F权8sIO1161后缀符号BODH在十进制中,如将一个数的每一位同时向左移动I位并且在右端补一个0,则其值增人到原來的十倍;如将一个数的每一位同时向右移动1位并丢弃原來的最右端数字,则其值减少到原来的十分同样,在二进制中,如将数的各位向左移动1位,则其值增大到原来的二倍;反之将数的各位向右移动1位,则其值减少到原来的二分之一。于是,CPU通过移位(shifting)操作实现将一个数乘以2或除以2的运算。例如,二进数101011.1在
7、左移1位或右移1位后,其值的变化如下:二进数值101011.143.5向左移1位1010111.087向右移1位10101.1121.751.2.2数值在不同数制之间的转换不同进位制数值Z间的数制转换实质上是进行基数的转换。转换所依据的原则是:如果两个数的值相等,则两数的整数部分和小数部分的值一定分别相等。因此,在转换时应对整数部分和小数部分分别进行转换。1.二进制、八进制和十六进制数转换为十进制数。将一个任意R进制数转换成十进制数可以采用按权相加法。即列出数值的按权数位展开式,然后相加,其和便是相应的十进制数。【例1-1】求与(10101
8、1.01)2等值的十进数解:(101011.01)2=1X25+0X24+1X23+0X22+1X21+1X2°+0X2_1+1X2'2二32+0+8+0+2+1+0+0.25=(43.25)io【例1-2】将十六进制数28F转换成十进数.解:(28F)16=2X162+8X16l+15X16°=512+128+15=(655)]02.十进制数转换成二进制数、八进制或十六进制数十进制数转换成二进制数耍分别对整数部分和小数部分采用不同的方法。整数部分的转换采用除R取余法。设一个十进制整数%已被表示成一个二进制数(KnK„-l-KlKo)2,其
9、中Ki为0或1(OWiWn),那么%按二进制数的权展开为:x=KnX2n+K„-!X2n_1+—+KiX2*+KoX2°由于展开式的前几项均为2的整数倍,显然第一次做妙2的商为: