Transcript 玩转数制及其转换
玩转数值及其转换
计算机科学与技术系
2012.4.16
引言
数制及其相互转换的知识在计算机学习中占有相
当重要的地位
高级语言、低级语言(机器语言、汇编语言、数字
逻辑、微机原理、计算机网络等核心课程的基础
知识贯穿计算机学习始终,不吃透这方面的知识
难以上台阶
有的电脑玩家也对此感到犯怵,有人受人误导,
甚至弃而不学,给后续课程带来麻烦
一种最基本的信息素养
知识延伸
计算机原理中的存储器的地址译码
计算机网络中的IP地址
计算机网络中的子网掩码
何为文本文件?如何从根本上理解呢?
字节的概念、存储容量的关系
数据的补码表示与浮点数运算
常用字符和数字的ASCII码
其实并不难,是被误导了
难点在于不习惯,感到别扭
没有掌握其中的一些技巧
应用偏少
误区:进制转换不重要
下面从基础知识讲起
一、数的定义
数:由一个或几个数字组成,它表示一个数目。
需要说明:
任何一个数都是由一个或几个数字组成。
例如:48是一个数,其中4和8都是数字,由于
十进制采用逢十进一的进位法,则4和8所表示
1
0
的不仅仅是4和8,而是4x10 +8x10 =48
数的定义
由此说明,当一个数字处在不同的位置时,
它代表的值就不一样。象刚才的十进制数
48,最右边的个位数字8不能代表其他值。
但是,左边的4即十位上的4它并不代表4
1
这个值,它必须乘上10 才能表示出它的真
正的值,这个10就是我们下面要提到的一
个新的概念。
二、基数(Radix)
我们知道,所有的十进制数都是由0,1,2,3,
4,5,6,7,8,9这十个基本数字用不同的排
列组合方法构成的。下面我们就给出记数系统
中基数的定义。
基数(Radix):一种记数系统中所具有的基本数
字个数就是基数。
由此可见:在十进制中,基数就是10
三、权(Weight)
权(weight):把一种记数系统中相应于
每一位数字的基数的幂次称为该位数字
的权。
如:十进制数按从低位到高位的次序,
0
1
2
3
各位的权分别是:10 ,10 ,10 , 10 ,
根据权的定义可知,一个数的每位数字
乘以其权所得的乘积之和即为该数表示
的真正的值。
十进制(Decimal)的特点
有十个不同的数字0、1、2、3、4、5、6、
7、8、9,每个符号表示数中的一位。
逢十进一的进位法。即逢基数10向高位进
一。
如:6、7、8、9都是一位,逢十时进位,
产生两位。
十进制(Decimal)的特点
9
+1
10
6
+ 8
1 4
十进制数的按权展开及其意义
在十进制中,每位数字都要乘以其相应位的权
(基数10的幂次)才能表示出它的真正的值。
例如:
1999=1x103+9x102+9x101+9x100
83.88=8Χ101+3Χ100+8Χ10-1+8Χ10-2
又如:时、分、秒为60进制。
时 分 秒
2 8
5
2x602+8x601+5x600
四、计算机中使用二进制的原因
这是因为,如果采用此种十进位制,机器就要有
十种状态来表示0,1,2,3,4,5,6,7,8,9
这十种符号,这将给机器的构造带来困难。电子
计算机是一种电器元件,它是由千千万万个小的
电子线路单元组成的,每个有两个稳定的工作状
态,这两种状态可对应两种符号,而物理上具有
两种不同稳定状态的器件很多,诸如电子元件的
开与关,晶体管的导通与截止,它们都可以用0和
1来表示。再者,二进制运算简单,便于实现,所
以,计算机中一般采用二进制。
二进制(Binary)的特点
1、有两个不同的数字0和1;
2、逢二进一的进位法,即逢基数2向
高位进1。
如: 1
11
+ 1
1
10
100
1111=1*2 +1*2 +1*2 +1*2
二进制数的按权展开
同理,所有二进制数都可用每位数字(0
或1)乘以相应位的权(基数2的幂次)
来表示其真正的值。
3
2
1
0
如:(1011)2=1X2 +0X2 +1X2 +1X2
(1011.101)2=1X23+0X22+1X21+1X20+
1X2-1+0X2-2+1X2-3
知识点延伸
如何判别一个数的奇偶特性?为什么?
其奇偶性由最低位决定
最低位为0———偶数
最低位为1———奇数
二进制数的缺点
不难发现,用二进制数表示一个数位数
很长,人们在阅读、书写和记忆时都很
不方便,而我们熟悉的十进制数与二进
制数之间并无直接的对应关系,为了便
于人们对二进制数的描述,人们就选择
了一些易于与二进制相互转换的数制,
常用的有我们下面介绍的八进制和十六
进制。
五、八进制(Octal)的特点
1、有八个不同的数字0,1,2,3,4,5,6,7;
2、逢八进一的进位法。即逢基数8向高位进1。
如:
6
+2
10
同样,所有八进制数都可用每位数字(0,1,2,3,4,
5,6,7)乘以相应位的权(基数8的幂次)来表示其
真正的值。
如:(1752)8=1X83+7X82+5X81+2X80
六、十六进制(Hexadecimal)
的特点
1、有十六个不同的数字0,1,2,3,4,5,6,7,
9,A,B, C,D,E,F
2、逢十六进一的进位法。即逢基数16向高位进1。
如: 9
+ 7
10
一个疑问
十六进制为什么用A,B,C,D,E,F表示
10,11,12,13,14,15,而不用二位数表
示呢?
注意:A,B,C,D,E,F分别表示
十进制中的10,11,12,13,14,
15,在十六进制中这六个数字要各
占一位,否则就会发生混乱。
十六进制数的按权展开
同样,所有十六进制数都可用每位数字
(0,1,2,3,4,5,6,7,8,9,A,
B,C,D,E,F)乘以相应位的权(基
数16的幂次)表示其真正的值。
如:(B56E)16
3
2
1
0
=BX16 +5X16 +6X16 +EX16
3
2
1
0
=11X16 +5X16 +6X16 +14X16
七、二进制与十进制、八进制、
十六进制数之间的转换
1、二进制与十进制数之间的转换
(1)二进制数转换成十进制数(按权相加法)
方法:将二进制数的每一位数字乘以基数2
的幂次再相加即得该二进制数对应的十进制
数
如(1011)2=1X23+0X22+1X21+1X20=(11)
10
3
2
1
0
(1011.101)2=1X2 +0X2 +1X2 +1X2 +1X2
-1
+0X2-2+1X2-3=(11.625)10
(2)十进制数转换成二进制
数(除基数2取余法)
1)、十进制整数转换成二进制整数
方法:用基数2连续去除十进制数,第一次除
得的余数就是二进制数的最低位数字,有余
数时余数应为1,无余数时余数应为0;然
后用2去除第一次所得的商,余数就是二进
制数倒数第二位数字;再用2去除第2次所
得的商,继续下去直到不能除为止。最后一
个小于2的商就是二进制的最高位数字。
一个例子
如:将十进制数46转换成二进制,步骤
如下
2)、十进制纯小数转化成二进
制纯小数:(乘基数2取整法)
方法:连续用2去乘十进制纯小数。第一次乘
积中的整数部分就是二进制数小数点后第一
位;把乘积的小数部分再乘以2,所得乘积中
的整数部分就是二进制数小数点后第二位;
这样一直乘到小数部分为0或达到要求的位数。
举例:
如:将十进制数0.625化成二进制数
0.625
X 2
第一位二进制数 1. 2 5
X 2
第二位二进制数 0. 5
X2
第三位二进制数
1. 0
∴(0.625)10=(0.101)2
3)既有整数又有小数的十进制
数转换成二进制数
方法:把整数部分和小数部分分别换算,
然后合并到一起即可。
如:(46)10=(101110)2
(0.625)10=(0.101)2
∴ (46.625)10=(101110.101)2
二进制数的优点
优点:
1、只有两个数码0和1,在电子技术中容
易实现。
如:高电平表示1,低电平表示0。
2、二进制的算术运算规则比较简单(即
运算简单)。
二进制数的缺点
1、写起来很长,容易写错;
2、不是人们习惯的数制,不容易看出是什么
数值,不便于记忆;
3、二进制数与十进制数没有直接的对应关系。
为书写方便,在编写程序时,特别是在低级语
言中,一般不用二进制,而采用八进制和十六
进制表示二进制数,因为这样更直观,也便于
记忆。
2、二进制数与八进制数之间的
转换:
大家知道,三位二进制数恰好能表示8个
不同的组合。即下面列出的前八个数:
二进制
八进制
000
0
001
1
010
2
011
3
100
4
101
5
110
6
111
001,000
001, 001
001, 010
…………
7
1,0
1, 1
1, 2
…….
体会其中的奥妙
三位二进制的八种组合正好
与八进制中与它们等值的八
个表示符号一一对应。
八进制进位成两位,二
进制成四位
二进制
001,000
001, 001
001, 010
001, 011
001, 100
001, 101
001, 110
001, 111
010, 000
…………
八进制
1,0
1, 1
1, 2
1, 3
1, 4
1, 5
1, 6
1, 7
2, 0
…….
把二进制数自右向左三
位一组分开,我们会发
现,每三位二进制数正
好顺序对应与它等值的
八进制数。例如:二进
制数1,110,表中给此
数前面补了两个0成为
001 , 110 ( 不 影 响 大
小),其中001对应八进
制1,而110对应八进制6
二进制转化为八进制数
从上面我们得出的二进制数与八进制数的
很好的对应关系,我们可以得出二进制和
八进制数之间的转换方法。
(1)二进制数转换成八进制数(三位分组
转换法,即合三为一法)
二进制转化为八进制数
方法如下:
第一步:从小数点起,对整数部分向左,分数
部分向右三位一组,最外端的那两组如不是三
位,要用0补足三位,补足时整数部分最高位
的一组把0加在左边,小数部分最低位的一组
把0加在右边;(以不影响大小)
第二步:将三位一组的二进制数分别转换成八
进制数即可。
举例
如:将二进制数1101100001.1100101011转换
成八进制数
补足3位
补足3位
001,101,100,001.110,010,101,100
1 5
4 1. 6 2 5
4
∴ (1101100001.1100101011)2
=(1541.6254)8
八进制数转换成二进制数(一分
为三法)
方法:将每一位八进制数用三位二进制数
来代替即可。
如:(307.165)8=(011 000 111.001 110
101)2
3、二进制数与十六进制数之间
的转换
由于4位二进制数恰好能表示16种组合,
与二进制同八进制的相互转换方法类似,
我们可得出下面的转换方法:
(1)、二进制数转换成十六进制数(四
位分组转换法,即合四为一法)
方法:合四为一法
第一步:从小数点起,对整数部分向左,
分数部分向右四位一组,最外端的那两
组如不是四位,要用0补足四位,补足时
整数部分最高位的一组把0加在左边,小
数部分最低位的一组把零加在右边;
(以不影响大小)
第二步:将四位一组的二进制数分别转
换成十六进制数即可。
举例
如:将二进制数10101111111.1101101011转
换成十六进制数
补足4位
补足4位
0101,0111,1111.1101,1010,1100
5
7
F . D
A
C
∴ (10101111111.1101101011)2
=(57F.DAC)16
(2) 十六进制数转换成二进制
数(一分为四法)
方法:将每一位十六进制数用四位二
进制数来代替即可.
如:(B8A3.D57)16=(1011,1000,
1010,0011.1101,0101,0111)2
八、八进制数与十进制数之间
的转换
(1)八进制数
十进制数
方法:按权展开法。
将八进制数的每位数字乘以其相应位的权
(基数8的幂次)相加即得所对应的十进制数。
(2)十进制数
八进制数(除基数8取
余法)
方法:与前面的除基数2取余法类同,不再骜
述。
十六进制与十进制之间的转换
十六进制与十进制之间的转换与上
面八进制与十进制之间的转换方法
完全类似
九、进制转换的一些技巧
1、按权展开法的应用
由于四位二进制数按高位到低位的顺序其相
应的权值分别是23,22,21,20,即8,4,2,
1,利用这一点,我们一看即知一个四位二进
制数是几。
熟练掌握3位二进制与十进制数的对应关系
熟练掌握4位二进制与十六进制数的对应关系
进制转换的一些技巧
2、在二进制与十进制之间互相转换
时,我们可以选八进制或十六进制作
为过渡,以减少除基数取余的次数,
特别在一个数较大时,更可以显示出
这种方法的优势.
举例
如:十进制数8769,如果用除2取余法
将它转换成二进制数是很繁琐的,
但是如果先将此数用除16取余法转
换成十六进制,再把十六进制数转换
成二进制不失为一种更好的方法。
(当然,也可以用除8取余法先转换
成八进制,再转换成二进制。)
举例
16
8769
1
16
548
4
16 34
2
16
2
∴ (8769)10= (2241)16
而把十六进制数2241用一分为四法转换成
二进制是非常容易的
即: (2241)16=(0010,0010,0100,0001)2
(8769)10=(2241)16=(0010,0010,0100,0001)
进制转换的一些技巧
3、过渡法
八进制
二进制
十六进制
4、要熟练掌握四位以下的二进制数与其
它进制数的对应关系。
5、凑项法
技巧
怎样去习惯他们
除以基数取余法
熟练掌握4位二进制数和十六进制数之间的对
应关系。
掌握一些特殊数的二进制表示
对2的整数次幂要敏感
对机器内部结构的理解,一台计算机的字长,
多少位机 8,,16,32
知识延伸
计算机原理中的存储器的地址译码
计算机网络中的IP地址
计算机网络中的子网掩码
何为文本文件?如何从根本上理解呢?
字节的概念、存储容量的关系
数据的补码表示与浮点数运算
常用字符和数字的ASCII码
问题
1、为什么要引入八进制和十六进制
2、下面这些数对应的二进制数和十六进
制数是多少?
65536,65535,255,254,127,128,192,224,
240,248,252
n n-1
2 ,2
最后需要特别强调:
八进制、十六进制仅仅是一种人为的表
示方法。但在机器内部数据仍然以二进
制形式存储。