玩转数制及其转换

Download Report

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
最后需要特别强调:

八进制、十六进制仅仅是一种人为的表
示方法。但在机器内部数据仍然以二进
制形式存储。