计算机中的数的表示
人们习惯用十进制数,它有两个特点:①基数为10,②逢十进一(其它数制特点亦
n-1
类似),可表示为(A)10=∑ ki*10
i=-m
一)、数制
计算机中采用的是二进制,因为二进制具有运算简单,易实现且可靠,为逻辑设计提供了有利的途径、节省设备等优点,为了便于描述,又常用八、十六进制作为二进制的缩写。
一般计数都采用进位计数,其特点是:
(1)逢N进一,N是每种进位计数制表示一位数所需要的符号数目为基数。
(2)采用位置表示法,处在不同位置的数字所代表的值不同,而在固定位置上单位数字表示的值是确定的,这个固定位上的值称为权。
在计算机中:D7 D6 D5 D4 D3 D2 D1 D0 只有两种0和1
二)、数制转换
不同进位计数制之间的转换原则:不同进位计数制之间的转换是根据两个有理数如相等,则两数的整数和分数部分一定分别相等的原则进行的。也就是说,若转换前两数相等,转换后仍必须相等。
要求以下四种进制:
十进制:有10个基数:0 ~~ 9 ,逢十进一
二进制:有2 个基数:0 ~~ 1 ,逢二进一
八进制:有8个基数:0 ~~ 7 ,逢八进一
十六进制:有16个基数:0 ~~ 9,A,B,C,D,E,F (A=10,B=11,C=12,D=13,E=14,F=15)
,逢十六进一
1、数的进位记数法
N=an-1*pn-1+an-2*pn-2+…+a2*p2+a1*p1+a0*p0
2、十进制数与P进制数之间的转换
①十进制转换成二进制:十进制整数转换成二进制整数通常采用除2取余法,小数部分乘2取整法。例如,将(30)10转换成二进制数。
将(30)10转换成二进制数
2|30 ….0 ----最右位
2|15 ….1
2| 7 ….1
2| 3 ….1
1 ….1 ----最左位
∴ (30)10=(11110)2
将(30)10转换成八、十六进制数
8| 30 ……6 ------最右位
3 ------最左位
∴ (30)10 =(36)8
16| 30
…14(E)----最右位
1 ----最左位
∴ (30)10 =(1E)16
3、将P进制数转换为十进制数
把一个二进制转换成十进制采用方法:把这个二进制的最后一位乘上20,倒数第二位乘上21,……,一直到最高位乘上2n,然后将各项乘积相加的结果就它的十进制表达式。
把二进制11110转换为十进制
(11110)2 = 1*2(4)+1*2(3)+1*2(2)+1*2(1)+0*2(0)
= 16+8+4+2+0
=(30)10
把一个八进制转换成十进制采用方法:把这个八进制的最后一位乘上80,倒数第二位乘上81,……,一直到最高位乘上8n,然后将各项乘积相加的结果就它的十进制表达式。
把八进制36转换为十进制
(36)8=3*8(1)+6*8(0)=24+6=(30)10
把一个十六进制转换成十进制采用方法:把这个十六进制的最后一位乘上160,倒数第二位乘上161,……,一直到最高位乘上16n,然后将各项乘积相加的结果就它的十进制表达式。
把十六制1E转换为十进制
(1E)16=1*16(1)+14*16(0)=16+14=(30)10
3、二进制转换成八进制数
(1)把二进制数转换成八进制数:对于整数,从低位到高位将二进制数的每三位分为一组,若不够三位时,在高位左面添0,补足三位,然后将每三位二进制数用一位八进制数替换,小数部分从小数点开始,自左向右每三位一组进行转换即可完成。例如:
将二进制数1101001转换成八进制数,则
(001 101 001)2
| | |
( 1 5 1)8
( 1101001)2=(151)8
(2)八进制数转换成二进制数:只要将每位八进制数用三位二进制数替换,即可完成转换,例如,把八进制数(643.503)8,转换成二进制数,则
(6 4 3 . 5 0 3)8
| | | | | |
(110 100 011 . 101 000 011)2
(643.503)8=(110100011.101000011)2
4、二进制与十六进制之间的转换
(1)二进制数转换成十六进制数:由于2的4次方=16,所以依照二进制与八进制的转换方法,将二进制数的每四位用一个十六进制数码来表示,整数部分以小数点为界点从右往左每四位一组转换,小数部分从小数点开始自左向右每四位一组进行转换。
(2)十六进制转换成二进制数
如将十六进制数转换成二进制数,只要将每一位十六进制数用四位相应的二进制数表示,即可完成转换。
例如:将(163.5B)16转换成二进制数,则
( 1 6 3 . 5 B )16
| | | | |
(0001 0110 0011. 0101 1011 )2
(163.5B)16=(101100011.01011011)2
小结数制问题:
(1)注意下列规律的应用:2(0)=(1)2 2(1)=(10)2 2(2)=(100)2
2(3)=(1000)2(4)=(10000)2
......2(n)=(1000…00)2
(2)8进制的个位数与3位二进制数建立一个一一对应关系;
16进制的个位数与4位二进制数建立一个一一对应关系;
(3)十进制的纯小数转换为N进制数的方法是:小数点位置不变,乘N取整。
(4)十进制的整数转换为N进制数的方法是:除N取余数,反读;
(5)N进制的整数转换为十进制数的方法是:
(amam-1am-2….a2a1a0)N
=(am*N m+am-1*N m -1+…+a2*N 2+a1*N 1+a0*N 0)10
(6)如果小数点不在a0 的后面,而在a2后面时,展开式又怎样呢?
四)计算机的编码问题
1) BCD编码原理 2) 汉字编码原理 3) 原码表示与补码表示
五)练习:
约定(amam-1am-2……a2a1a0)N来表示N进制的一个数,而且am不为零,试做下列各问题:
(1)当该数有三位小数位时,试写出(amam-1am-2……a2a1a0)N展开式
(2)当N=8时且该数的小数点在a0后面时,试求该数可以表达的最大的及最小的二进制数、十进制数、十六进制数。
要做好做对这道综合题,还不是一件简单的事情,需要应试者对数制方面的知识熟练掌握,然后进行综合应用,才能完整地做好这道综合题。该题的难度与普通高考的综合题难度相当。是一类考核学生信息技术范畴知识点综合应用能力的题目。希望同行共同探讨,其它方面的知识点,是不是也可以,以此为借鉴,收集更多类似的题目,为进一步完善中小学信息技术课程教育教学的科学而全面的评价出点力!
参考答案:
1、 理解(amam-1am-2……a2a1a0)N 是表示N进制数一个数的序列,或者说一个N进制数的表示通式。
2、 如果该数有三位小数位时,则表示小数点在数字序列中的a3a2 这两数字之间,则从am到a3 是该数中整数部分的数字序列,而a2a1a0
是该数中小数部分的数字序列。
3、 故(amam-1am-2……a2a1a0)N
= am×N m-2 +am-1×N m-3+…+a3×N 0+a2×N -1+a1×N -2 +a0×N
-3
"="等号的右边的式子的计算结果就是该N进制数对应的十进制数。
4、 当N=8时且该数的小数点在a0后面时,该数所表示的就是一个8进制整数的数字序列,而且am不为零,所以该8进制整数最大的和最小的数字序列分别如下:
最大数(8进制):(777……777)8
(括号中有m+1个7) ,记为A数
最小数(8进制):(100……000)8 (括号中有m个0) ,记为B数
A数所对应的二进制数为:(111……111)2
(括号中有3m+3个1)
B数所对应的二进制数为:(100……000)2 (括号中有3m个0)
A数所对应的十进制数为:(
2的3m+3次方 -1 )10
B数所对应的十进制数为:(2的3m次方 )10
下列式子中的m,k都为自然数,则有:
当3m+3=4k时,A数所对应的十六进制数:(FF……FF )16 其中有3 (m+1)/4个F;
当3m+3=4k+1时,A所对应的十六进制数:(1F……FF )16 其中有(3m+2)/4个F;
当3m+3=4k+2时,A所对应的十六进制数:(2FF……FFF )16 其中有(3m+1)/4个F;
当3m+3=4k+3时,A所对应的十六进制数:(3FF……FFF )16 其中有3m/4个F;
当3m=4k时,B数所对应的十六进制数:(10……00
)16 其中有3m/4个0;
当3m=4k+1时, B所对应的十六进制数:(20……00 )16 其中有(3m-1)/4个0;
当3m=4k+2时, B所对应的十六进制数:(40……00 )16 其中有(3m-2)/4个0;
当3m=4k+3时, B所对应的十六进制数:(80……00 )16 其中有(3m-3)/4个0。