计算机数制转换.docx
《计算机数制转换.docx》由会员分享,可在线阅读,更多相关《计算机数制转换.docx(26页珍藏版)》请在冰豆网上搜索。
计算机数制转换
1.1计算机系统的组成及发展
1.1.1计算机的发展与应用
目前,大家公认的第一台计算机是在1946年2月由宾州大学研制成功的ENIACm即"电子数字积分计算机"。
虽然它每秒只能进行5000次加减运算,但它预示了科学家们将从奴隶般的计算中解脱出来。
至今人们公认,ENIAC机的问世,表明了电子计算机时代的到来,具有划时代意义。
第一款商用计算机是1951年开始生产的UNIVAC计算机。
1947年,ENIAC的两个发明人莫奇莱和埃克特创立了自己的计算机公司,生产UNIVAC计算机,计算机第一次作为商品被出售。
UNIVAC作为商品出售,用于公众领域的数据处理,共生产了近50台。
近代电子计算机的发展:
第一代电子管计算机(1945-1956)
1946年2月14日,标志现代计算机诞生的ENIAC(ElectronicNumericalIntegratorandComputer)在费城公诸于世。
ENIAC代表了计算机发展史上的里程碑,它通过不同部分之间的重新接线编程,还拥有并行计算能力。
ENIAC由美国政府和宾夕法尼亚大学合作开发,使用了18000个电子管,70000个电阻器,有5百万个焊接点,耗电160千瓦,其运算速度为每秒5000次。
第一代计算机的特点是操作指令是为特定任务而编制的,每种机器有各自不同的机器语言,功能受到限制,速度也慢。
另一个明显特征是使用真空电子管和磁鼓储存数据.
第二代晶体管计算机(1956-1963)
1948年,晶体管发明代替了体积庞大电子管,电子设备的体积不断减小。
1956年,晶体管在计算机中使用,晶体管和磁芯存储器导致了第二代计算机的产生。
第二代计算机体积小、速度快、功耗低、性能更稳定。
1960年,出现了一些成功地用在商业领域、大学和政府部门的第二代计算机。
第二代计算机用晶体管代替电子管,还有现代计算机的一些部件:
打印机、磁带、磁盘、内存、操作系统等。
计算机中存储的程序使得计算机有很好的适应性,可以更有效地用于商业用途。
在这一时期出现了更高级的COBOL和FORTRAN等语言,使计算机编程更容易。
新的职业(程序员、分析员和计算机系统专家)和整个软件产业由此诞生。
第三代集成电路计算机(1964-1971)
1958年德州仪器的工程师JackKilby发明了集成电路(IC),将三种电子元件结合到一片小小的硅片上。
更多的元件集成到单一的半导体芯片上,计算机变得更小,功耗更低,速度更快。
这一时期的发展还包括使用了操作系统,使得计算机在中心程序的控制协调下可以同时运行许多不同的程序。
第四代大规模集成电路计算机(1971-现在)
大规模集成电路(LSI)可以在一个芯片上容纳几百个元件。
到了80年代,超大规模集成电路(VLSI)在芯片上容纳了几十万个元件,后来的(ULSI)将数字扩充到百万级。
可以在硬币大小的芯片上容纳如此数量的元件使得计算机的体积和价格不断下降,而功能和可靠性不断增强。
70年代中期,计算机制造商开始将计算机带给普通消费者,这时的小型机带有友好界面的软件包,供非专业人员使用的程序和最受欢迎的字处理和电子表格程序。
1981年,IBM推出个人计算机(PC)用于家庭、办公室和学校。
80年代个人计算机的竞争使得价格不断下跌,微机的拥有量不断增加,计算机继续缩小体积。
与IBMPC竞争的AppleMacintosh系列于1984年推出,Macintosh提供了友好的图形界面,用户可以用鼠标方便地操作。
未来新型计算机
1.光计算机
光计算机就是利用光作为信息的传输媒体。
与电子相比,光子具有许多独特的优点:
它的速度永远等于光速、具有电子所不具备的频率及偏振特征。
此外,光信号传输不需要导线,不会互相干扰。
光学计算机的智能水平也远远超过电子计算机的智能水平,是人们梦寐以求的理想计算机。
2.生物计算机(分子计算机)
生物计算机最大的特点是采用了生物芯片物工程技。
在这种芯片中,信息以波的形式传播,运算速度比当今最新一代计算机快10万倍,能量消耗仅相当于普通计算机的十分之一,并且拥有巨大的存储能力。
3.量子计算机
量子计算机,是指利用处于多现实态下的原子进行运算的计算机。
利用不同的原子状态代表不同的数字或其数据,在同一时间对某一问题的所有答案进行探寻,就可以使代表正确答案的组合脱颖而出。
与传统的电子计算机相比,量子计算机有以下优势:
解题速度快、存储量大、搜索功能强劲和安全性较高等优点。
高性能计算机
是密码研究、工程计算、新药设计、生物基因、船舶工程、地质勘探、海洋工程、气象气候、地震预报、城市建设、核爆模拟、石油物探、航空航天、材料工程、环境科学和基础科学等领域不可缺少的高端计算工具。
高性能计算机,其能够适应国民经济建设和国防建设诸多领域的应用。
解决了我国工程和科学计算领域许多原来无法解算的问题;主要应用包括:
气象气候、药物研究、石油勘探、流体力学、分子动力学、生物工程、材料力学、天文学研究、制造业;等诸多领域的上百个用户几百道课题,并已经取得了较好的应用成果;
电子计算机的诞生,是20世纪最重大的科技成就,它比18世纪瓦特发明的蒸汽机引起的工业革命对人类的生产和生活方式的影响还要深刻很多。
在发展的50多年时间里,它极大地增强了人类认识世界、改造世界的能力,深人并影响到社会和生活的各个领域,计算机科学己成为新技术的带头学科和先导技术,成为新的生产力的代表。
现在,计算机的发展与应用水平已成为衡量一个国家现代化水平的重要标志。
计算机应用范围
非常广泛,并且还在不断向各行各业渗透扩展,概括起来主要有以下五个方面:
1、科学计算:
科学计算机又称数值计算。
它是计算机最早的应用领域。
科学计算是指计算机用于完成科学研究和工作技术中所提出的数学问题的计算。
这类计算往往公式复杂、难度很大,用一般计算机工具难于完成。
例如,气象预报需要求解描述大气运动规律的微分方程,发射导弹,需要计算导弹弹道曲线方程,水利土木工程中有大量力学问题需要计算。
有些科技问题计算方法并不复杂,但计算工作量太大,人工根本无法完成。
例如证明画地图时只需四种颜色即可做到使相邻两国不出现同一颜色的“四色定理”,在数学上长期不能得到证明,成为一大难题。
因为用人工证明昼夜不停的计算要算十几万年,而使用高速电子计算机,这问题就可解决。
还有一类问题如用人工计算速度太慢,得到结果时已失去实际意义,如气象预报,只有采用计算机快递计算才能及时解决。
2、 数据处理:
数据处理又称信息加工,是现代化管理的基础。
包括对数据的记录、整理、加工、合并和分类统计等。
数据处理在计算机应用中比重最大。
3、 过程控制:
过程控制又称实时控制。
其工作过程是选用传感器及时检测受控对象的数据,求出它们与设定数据的偏差,接着由计算机按控制模型进行计算,然后产生相应的控制信号,驱动伺服装置对受控对象进行控制或调节。
从60年代起,实时控制就开始应用于冶金、机械、电力、石油化工等部门。
例如高炉炼铁,计算机用于控制投料、出铁出渣以及对原料和生铁成分的管理和控制,通过对数据的采集和处理,实现对各工作操作的指导。
实时控制是实现工业生产过程自动化的一个重要手段。
4、 计算机辅助系统:
a) 计算机辅助设计与制造,简称CAD/CAM。
它是利用计算机的快速计算,逻辑判断等功能和人的经验与判断能力相结合,形成一个专业系统,用来帮助产品或各项工程的设计制造,使设计和制造过程实现半自动化或自动化。
这不仅可以缩短设计周期,节省人力、物力、降低成本,而且可提高产品质量、计算机辅助设计已广泛应用于飞机,船舶、汽车、建筑、服装等行业,这类牵涉外观形状设计的称为计算机辅肋几何设计(CAGD),另一类是应用于集成电路中的布线,称为计算机辅助逻辑设计。
b) 计算机集成制造系统,简称CIMS。
它是集设计、制造、管理等三大功能于一体的现代化工厂生产系统。
CIMS是从80年代初期迅速发展起来的一种新型的生产模式,具有生产效率高,生产周期短等优点。
c) 计算机辅助教育,简称CDE。
它包括计算机辅助教学(CAI)和计算机管理教学(CMI)。
在计算机辅助教学中,课件CAI系统所使用的教学软件,相当于传统教学中的教材,并能实现远程教学、个别教学,并有自我检测、自动评分等功能。
可模拟实验过程,并通过画面直观展示给学生。
它是现代化教育强有力的手段。
5、 人工智能:
人工智能、简称AI、它是让计算机模拟人的某些智能行为。
人的智能活动是一高度复杂的脑功能,如联想记忆、模式识别、决策对奕、丈艺创作、创造发明等,都是一些复杂的生理和心理活动过程。
智能模拟是一门涉及许多学科的边缘学科。
近20余年来,围绕AI的应用主要表现在以下几个方面:
a) 机器人,可分为工业机器人和智能机器人。
工业机器人由事先编好的程序控制,通常用于完成重复性的规定操作。
智能机器人具有感知和识别能力,能说话和回答问题。
b) 专家系统,它是用于模拟专家智能的一类软件。
需要时只须由用户输人要查询的问题和有关数据,专家系统通过推理判断向用户作出解答。
c) 模式识别,它的实质是抽取被识别对象的特征,即所谓模式,与事先存在于计算机中的已知对象的特征进行比较与判别。
主要通过识别函数和模式校对来实现。
文字识别、声音识别、邮件自动分检、指纹识别、机器人景物分析等都是模式识别应用的实例。
d) 智能检索,它除存储经典数据库中代表已知“事实”外,智能数据库和知识库中还存储供推理和联想使用的“规则”,因而智能检索具有一定的推理能力。
1.1.2计算机系统组成
计算机系统由硬件和软件两大部分组成.
(1)硬件的组成(输入设备,输出设备,存储器,运算器,控制器)
输入设备:
使计算机从外部获得信息的设备如鼠标,键盘,光笔,扫描仪,话筒,数码相机,摄像头,
手写板
输出设备:
把计算机处理信息的结果以人们能够识别的形式表示出来的设备如显示器,打印机,绘图仪,音箱,投影仪
存储器:
如硬盘,光驱,U盘
运算器:
算术运算,逻辑运算
控制器:
如从存储器中取出指令,控制计算机各部分协调运行
控制器和运算器整合在CPU中
(2)软件的组成
软件定义:
程序和有关文档资料的合称
软件分类:
系统软件(使用和管理计算机的软件)和应用软件(专为
某一应用编制的软件)
常见的系统软件有:
操作系统,数据库管理系统和程序设计语言
常见的应用软件有:
辅助教学软件,辅助设计软件,文字处理软件,
信息管理软件和自动控制软件
1.2.1在计算机中为什么使用二进制数
在计算机中,广泛采用的是只有"0"和"1"两个基本符号组成的二进制数,而不使用人们习惯的十进制数,原因如下:
(1)二进制数在物理上最容易实现。
例如,可以只用高、低两个电平表示"1"和"0",也可以用脉冲的有无或者脉冲的正负极性表示它们。
(2)二进制数用来表示的二进制数的编码、计数、加减运算规则简单。
(3)二进制数的两个符号"1"和"0"正好与逻辑命题的两个值"是"和"否"或称"真"和"假"相对应,为计算机实现逻辑运算和程序中的逻辑判断提供了便利的条件。
1.2.2为什么引入八进制数和十六进制数
二进制数书写冗长、易错、难记,而十进制数与二进制数之间的转换过程复杂,所以一般用十六进制数或八进制数作为二进制数的缩写。
进位计数制
按进位的原则进行的计数方法称为进位计数制。
在采用进位计数的数字系统中,如果用r个基本符号(例如:
0,1,2,,r-1)表示数值,则称其为基r数制(Radix-rNumberSystem),r成为该数制的基(Radix)。
如日常生活中常用的十进制数,就是r=10,即基本符号为0,1,2,,9。
如取r=2,即基本符号为0,1,则为二进制数。
认识各种数制的数
表1各种数制表示的相互关系
二进制数
十进制数
八进制数
十六进制数
0
0
0
0
1
1
1
1
10
2
2
2
11
3
3
3
100
4
4
4
101
5
5
5
110
6
6
6
111
7
7
7
1000
8
10
8
1001
9
11
9
1010
10
12
A
1011
11
13
B
1100
12
14
C
1101
13
15
D
1110
14
16
E
1111
15
17
F
10000
16
20
10
对于不同的数制,它们的共同特点是:
1)每一种数制都有固定的符号集:
如十进制数制,其符号有十个:
0,1,2,,9,二进制数制,其符号有两个:
0和1。
2)其次都是用位置表示法:
即处于不同位置的数符所代表的值不同,与他所在位置的权值有关。
例如:
十进制可表示为:
5555.555=5103+5102+5101+5100+510-1+510-2+510-3
可以看出,各种进位计数制中的权的值恰好是基数的某次幂。
因此,对任何一种进位计数制表示的数都可以写出按其权展开的多项式之和,任意一个r进制数N可表示为:
式中的Di为该数制采用的基本数符,ri是位权(权),r是基数,表示不同的进制数;m为整数部分的位数,k为小数部分的位数。
"位权"和"基数"是进位计数制中的两个要素。
在十进位计数制中,是根据"逢十进一"的原则进行计数的。
一般地,在基数为r的进位计数制中,是根据"逢r进一"或"逢基进一"的原则进行计数的。
在微机中,常用的是二进制、八进制和十六进制。
其中,二进制用得最为广泛。
表2所示的是计算机中常用的几种进位数制。
表2计算机中常用的几种进制数的表示
进位制
二进制
八进制
十进制
十六进制
规则
逢二进一
逢八进一
逢十进一
逢十六进一
基数
r=2
r=8
r=10
r=16
数符
0,1
0,1,,7
0,1,,9
0,1,,9,A,,F
位权
2i
8i
10i
16i
形式表示
B(BinarySystem)
O(octalSystem)
D(DecimalSystem)
H(HexadecimalSystem)
1.2.3二、八、十六进制数(非十进制数)转换为十进制数
(1)(100110.101)2()10
(100110.101)2=1*2^5+1*2^2+1*2^1+1*2^(-1)+1*2^(-3)=32+4+2+0.5+0.125=(38.625)10
(2)(5675)8()10
(5675)8=5*8^3+6*8^2+7*8^1+5*8^0=2560+384+56+5=(3005)10
(3)(3B)16()10
(3B)16=3*16^1+11*16^0=48+11=(59)10
课堂练习:
(143.65)8()10
(143.65)8=1*8^2+4*8^1+3*8^0+6*8^(-1)+5*8-2
=64+32+3+0.75+0.78125
=(99.828125)10
1.2.4十进制数转换为二、八、十六进制数(非十进制数)
例:
(25.3125)10()2
整数部分和小数部分的转换方法不同
(1)整数部分的转换(除基取余法)
(25)10=()2
(25)10=(11001)2
先余为低,后余为高
(2)小数部分的转换(乘基取整法)
(0.3125)10=()2
(0.3125)10=(0.0101)2
先取整为高,后取整为低
综上所述:
(25.3125)10=(11001)2+(0.0101)2=(11001.0101)2
十进制数转换为八、十六进制数以此类推
课堂练习:
(29.625)10()8
(29)10=(35)8
(0.625)10=(0.5)8
(29.625)10=(35)8+(0.5)8=(35.5)8
1.2.5非十进制数间的转换
(1)二进制数与八进制数间的转换
∵81=23
∴1位八进制数相当于3位二进制数,即:
N2=B8B7B6B5B4B3B2B1B0
N8=O2O1O0
例:
(10100101.01011101)2()8
解:
由于八进制的1位数相当于二进制的3位数,所以只要将二进制数从小数点开始,整数部分从右向左每3位数一组,小数部分从左向右每3位数一组,最后不足3位补零(无论向左还是向右)。
010100101.010111010二进制数
245.272八进制数
答:
(10100101.01011101)2=(245.272)8
例:
(302.54)8()2
解:
302.54八进制数
011000010.101100二进制数
答:
(302.54)8=(11000010.1011)2
(2)二进制数与十六进制数间的转换
∵161=24
∴1位十六进制数相当于4位二进制数,即:
N2=B7B6B5B4B3B2B1B0
N16=H1H0
例:
(1111111000111.100101011)2()16
解:
0001111111000111.100101011000二进制数
1FC7.958十六进制数
答:
(1111111000111.100101011)2=(1FC7.958)16
例:
(3C.A6)16()2
解:
3C.A6十六进制数
00111100.10100110二进制数
答:
(3C.A6)16=(111100.1010011)2
(3)八进制数与十六进制数间的转换
(1)八进制数==>十进制数==>十六进制数
或:
(2)八进制数==>二进制数==>十六进制数(简单)
1.6数制转换小结
四合一一分四一分三三合一
按权除2取余展乘2取整开
除16取余按权展开按权展开整数:
除8取余
乘16取整小数:
乘8取整
作业:
(一)在计算机中为什么采用二进制?
(二)在计算机中为什么引入八进制和十六进制?
(三)(57.25)10=()2=()8=()16
(四)(10101011.101)2=()10=()8
=()16
(五)(157.34)8=()2=()16=()10
(六)(2CE.D8)16=()2=()8=()10
1.2.6原码、反码、补码
一、整数的表示法
结束了各种进制的转换,我们来谈谈另一个话题:
原码、反码、补码。
我们已经知道计算机中,所有数据最终都是使用二进制数表达。
我们也已经学会如何将一个10进制数如何转换为二进制数。
不过,我们仍然没有学习一个负数如何用二进制表达。
比如,假设有一int(整型)类型的数,值为5,那么,我们知道它在计算机中表示为:
00000000000000000000000000000101
5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。
现在想知道,-5在计算机中如何表示?
在计算机中,负数以其正值的补码形式表达。
什么叫补码呢?
这得从原码,反码说起。
原码:
一个整数,按照绝对值大小转换成的二进制数,称为原码。
比如00000000000000000000000000000101是5的原码。
反码:
将二进制数按位取反,所得的新二进制数称为原二进制数的反码。
取反操作指:
原为1,得0;原为0,得1。
(1变0;0变1)
比如:
将00000000000000000000000000000101每一位取反,得11111111111111111111111111111010。
称:
11111111111111111111111111111010是00000000000000000000000000000101的反码。
反码是相互的,所以也可称:
11111111111111111111111111111010和00000000000000000000000000000101互为反码。
补码:
反码加1称为补码。
也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。
比如:
00000000000000000000000000000101的反码是:
11111111111111111111111111111010。
那么,补码为:
11111111111111111111111111111010+1=11111111111111111111111111111011
所以,-5在计算机中表达为:
11111111111111111111111111111011。
转换为十六进制:
0xFFFFFFFB。
再举一例,我们来看整数-1在计算机中如何表示。
假设这也是一个int类型,那么:
1、先取1的原码:
00000000000000000000000000000001
2、得反码:
11111111111111111111111111111110
3、得补码:
11111111111111111111111111111111
可见,-1在计算机里用二进制表达就是全1。
16进制为:
0xFFFFFF。
一切都是纸上说的……说-1在计算机里表达为0xFFFFFF,我能不能亲眼看一看呢?
当然可以。
利用C++Builder的调试功能,我们可以看到每个变量的16进制值。
二、小数的表示法
小数在计算机内有两种表现形式定点数和浮点数。
在定点机中,由于小数点的位置固定不变,以此当机器处理的数不是纯小数或纯整数的时候,必须乘上一个比例因子,否则会产生“溢出”。
而实际上计算机处理的数不一定是纯小数或纯整数,而且有些数据的数值范围相差很大,不能直接用定点小数或定点整数表示,必须用浮点数来表示。
浮点数的表示精度要比定点数高的多。
要求用定点运算来仿真浮点运算,用定点数运算的思想去实现浮点数的运算。
定点表示法:
具体参见课本P7图1-4
浮点表示法(科学计数法):
具体参见课本P8图1-5
1.2.7字符与汉字编码
计算机除了用于数值计算外,还有其他许多方面的应用。
因此,计算机出力的不只是一些数字,还要处理大量符号等非数值信息。
非数值信息通常不表示数值的大小,只表示字符或图形等信息,这些信息在计算机中也是以二进制形式表示的。
目前国际上广泛采用的是美国国家信息交换标准代码ASCII码。
其包括十进制数字0——9、大小写的英文字母、各种运算符和标点符号共约128个字符,也成为二进制编码。
汉字种类繁多,编码比拼音文字困难得多,因此在输入、计算机内部处理、输出时要使用不同的编码,各种编码之间要进行转换,如图所示:
1、国标:
中华人民共和国国家标准信息交换用汉字编