ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:28.93KB ,
资源ID:4282175      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4282175.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机科学基础.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机科学基础.docx

1、计算机科学基础第1章 计算机科学基础1.1 数制及其转换1.1.1 数制的概念数制也叫“进位计数制”,一般指用一组固定的数字符号线性排列,按照由低位向高位进位计数的规则来表示数目的方法。在人们的社会生产活动和日常生活中,大量使用着各种进位计数制,除了使用最普遍的十进制外,还常用到七进制(七天为一周)、十二进制(十二个月为一年)、六十进制(六十秒为一分,六十分为一小时),等等。在电子数字计算机中数据存储、处理和传送时常采用二进制数,而为了书写方便,还引入了八进制数、十六进制数,十进制数。进位计数制涉及两个基本要素:基数(radix)和各个数位的位权(weight)。如果在一个采用进位计数制的数字

2、系统中,只使用R个基本符号(例如,0,1,2,R1)来表示数值,则称其为基R数制,R则称为该数制的“基数”,而每一个数码位置所对应的数值则称为“位权”。简言之,基数就是该进制中所允许选用的基本数码的个数,例如,十进制是逢十进一,每个数位上所允许使用的数符是0,1,2,9共10个,所以十进制的基数为10;位权的大小就是以基数为底、数码所在位置的序号为指数的整数次幂,例如,十进制数的个位数位置的位权为100=1,十位数位置的位权为101=10,百位数位置的位权为102=100,小数点后第2位的位权为102=0.01。一般来说,任意一个具有n位整数和m位小数的R进制数N可以按权展开表示为:(N)R

3、= dn1Rn1+dn2Rn2+d1R1+d0R0+d1R1+dmRm例如,在十进制中,234.56可以表示为:(234.56)10 = 2102+3101+4100+5101+61021.1.2 常用数制及其转换方法1计算机中的常用数制在现代电子数字计算机技术领域,计算机内部对各种数据、指令等均使用二进制编码表示,原因如下。(1)技术上容易实现,可靠性强。大多数用来组成计算机的元器件都具有两种稳定状态:电流的通和断;电压的高和低;晶体管的导通和截止;电容的充电和放电;磁场的南极和北极;光信号的有和无等。这两种状态界限分明、稳定可靠、抗干扰能力强,恰好可以表示二进制中的两个数码“1”和“0”。

4、(2)运算规则简单。二进制数由于数码个数少,运算规则比十进制简单得多,如表1-1所示。因此可以简化计算机内部运算器、寄存器的线路设计,从而提高运算速度。表1-1 二进制运算规则加法规则减法规则乘法规则加法规则减法规则乘法规则0+0=000=000=01+0=110=110=00+1=101=1 且借位101=01+1=0且进位111=011=1(3)实现逻辑运算容易。计算机系统中除了算术运算外,逻辑运算也很重要,而二进制中的“1”和“0”和逻辑代数中的逻辑量“真”和“假”相吻合,可以使计算机十分方便地进行逻辑运算。(4)与其他数制转换方便。二进制与其他几种常用数制的对应关系并不复杂,可以很方便

5、地转换成八进制、十六进制和人们最习惯使用的十进制。为了便于区别不同的数制,常在数字后面加一个缩写字母作为数制的标识。表1-2列出了计算机中常用的几种数制。表1-2 计算机中常用的各种数制表示数制十进制二进制八进制十六进制数符0,1,2,90,10,1,2,70,1,2,9,A,B,C,D,E,F基数102816位权10i2i8i16i计数规则逢十进一逢二进一逢八进一逢十六进一标识字母D (可省略不写)BOH标识下标102816举例(123.625)D(123.625)2(1111011.101)B(1111011.101)2(173.5)O(173.5)8(7B.A)H(7B.A)162各种数

6、制间的转换绝大多数计算机都使用二进制进行算术逻辑运算,但是计算机用户在输入原始数据,打印、显示运算结果时,习惯使用的仍然是熟悉的十进制,这就要求计算机系统一方面能够将输入的十进制数据转换成二进制数据后再进行计算,另一方面还能够将二进制的计算结果转换成十进制数据后再进行输出。各种数制间的转换工作由计算机按照一定的算法自动完成。尽管二进制非常适合在计算机内使用,但是其书写复杂、数位冗长,容易出错且不便阅读。所以,在计算机技术文献的书写时,常使用八进制和十六进制。各种数制之间的转换方法如下:(1)任意进制转换成十进制。利用按权展开的方法,可以将一个任意进制的数转换成十进制数。只要将各位数码乘以各自的

7、权值后累加即可。【例】 将二进制数(1001.101)B转换成十进制数。解 (1001.101)B = 123+022+021+120+121+022+123 = 8+1+0.5+0.125 = (9.625)D【例】 将八进制数(25.46)O转换成十进制数。解 (215.46)O = 282+181+580+481+682 = 128+8+5+0.5+0.09375 = (141.59375)D【例】 将十六进制数(B2A.D)H转换成十进制数。解 (B2A.D)H =11162+2161+10160+13161 =2816+32+10+0.8125 = (2858.8125)D(2)十进

8、制转换成二进制。在将一个十进制数转换成二进制数时,对其整数部分和小数部分需要使用不同算法进行转换,整数部分用除基取余法转换,小数部分用乘基取整法转换。 除基取余法。转换算法为:将十进制整数除以二进制基数2,得到一个商数和余数,取该余数作为二进制数的最低位数d0;再将所得商数继续除以2,又得到一个商数和余数,取该余数作为二进制数的次低位数d1;重复此过程,直到商数为0;将每次除得余数(必定为0或1)按从低位到高位顺次排列,即构成对应的二进制数。【例】 将十进制整数(83)D转换为二进制整数。解 十进制整数 余数 二进制数码 位序2 8 3 1 d0 = 1 最低位 2 4 1 1 d1 = 1

9、次低位 2 2 0 0 d2 = 0 2 1 0 0 d3 = 0 2 5 1 d4 = 1 2 2 0 d5 = 0 2 1 1 d6 = 1 最高位0 商为0,结束最后结果为:(83)D = (d6d5d4d3d2d1d0)B = (1010011)B 乘基取整法。转换算法为:将十进制纯小数乘以二进制基数2,取其乘积的整数部分作为二进制小数的最高位d1;再将乘积的小数部分继续乘以2,所得新积的整数部分作为二进制小数的次高位d2;重复此过程,直到余下的纯小数为0或者满足所要求的精度为止;将每次取出的整数部分(必定为0或1)按从左到右顺次排列,即构成对应的二进制小数。【例】 将十进制小数(0.

10、8125)D转换为二进制小数。解 十进制小数 积的整数部分 二进制数码 位序0.8125 2 1.6250 1 d1 = 1 最高位0.625 2 1.250 1 d2 = 1 次高位0.25 2 0.50 0 d3 = 0 2 1.0 1 d4 = 1 最低位0.0 纯小数为0,结束最后结果为:(0.8125)D = (0.d1d2d3d4)B = (0.1101)B请注意,并不是所有的十进制小数都能完全精确地转换为有限位的二进制小数,例如,(0.3)D =(0.0011001100)B。这时可以根据精度要求并考虑计算机字长取一定位数后,按“0舍1入”原则得到该十进制小数的二进制近似值。当要

11、把一个既有整数又有小数部分的十进制数转换成二进制数时,按下列3个步骤进行: 将整数部分按除基取余法进行转换; 将小数部分按乘基取整法进行转换; 将已经转换的两部分合在一起即得所求的二进制数。【例】 将十进制数(83.8125)D转换为二进制数。解 由上可知 (83)D=(1010011)B(0.8125)D = (0.1101)B故 (83.8125)D=(1010011.1101)B(3)二进制与八进制相互转换。二进制的基数是2,八进制的基数是8。由于23=8,因此3位二进制数相当于1位八进制数。表1-3列出了3位二进制数与1位八进制数的对应关系。表1-3 二进制数与八进制数的对应关系二进制

12、数000001010011100101110111八进制数01234567当要把二进制数转换成八进制数时,以小数点为分界,整数部分从右向左,小数部分从左向右,每3位划分为一组(不足3位时,整数部分在高位补0占位,小数部分在低位补0占位),然后把每一组二进制数写成所对应的八进制数即可。【例】 将二进制数(1010011.1101)B转换成八进制数。解 (1010011.1101)B=( 0 0 1 0 1 0 0 1 1 . 1 1 0 1 0 0 )B 高位补0 低位补01 2 3 . 6 4最后结果为:(1010011.1101)B=(123.64)O反之,将每1位八进制数用3位二进制数来表

13、示,就可以把八进制数转换成对应的二进制数。【例】 将八进制数 (36.57)O转换成二进制数。解 (36.57)O =36.57.011110.101111最后结果为:(36.57)O = (11110.101111)B(4)二进制与十六进制相互转换。二进制的基数是2,十六进制的基数是16。由于 24=16,因此4位二进制数相当于1位十六进制数。表1-4列出了4位二进制数与1位十六进制数的对应关系。表1-4 十六进制数与十进制数、二进制数的对应关系二进制数0000000100100011010001010110011110001001101010111100110111101111十进制数01

14、23456789101112131415十六进制数0123456789ABCDEF与二进制转换成八进制类似,当要把二进制数转换成十六进制数时,以小数点为分界,整数部分从右向左,小数部分从左向右,每4位划分为一组(不足4位时,整数部分在高位补0占位,小数部分在低位补0占位),然后把每一组二进制数写成所对应的十六进制数即可。【例】 将二进制数(1011011.1101)B转换成十六进制数。解 (1011011.1101)B = ( 0 1 0 1 1 0 1 1 . 1 1 0 1 )B 高位补0 5 B . D最后结果为:(1011011.1101)B = (5B.D)O反之,将每1位十六进制数

15、用4位二进制数来表示,就可以把十六进制数转换成对应的二进制数。【例】 将十六进制数 (3A.7C)H转换成二进制数。解 (3A.7C)H = 3A.7C.00111010.01111100最后结果为:(3A.7C)H = (111010.011111)B(5)八进制与十六进制相互转换。如果需要把八进制与十六进制相互转换时,则需要借助二进制来实现。先把八进制数(或十六进制数)转换成二进制数,然后把所得的二进制数再转换成十六进制数(或八进制数)即可。【例】 将十六进制数(2A.5C)H转换成八进制数。解 (2A.5C)H = 2A.5C.00101010.01011100101010.010111

16、.52.27最后结果为:(2A.5C)H = (52.27)O1.2 数据的表示1.2.1 数值的编码表示计算机可以处理的信息多种多样,其中一类就是按进位计数制表示的有大小、正负之分的数值型数据。因为计算机内部硬件只能表示0和1两种状态,所以在表示数值时,除了要将数值转换为二进制数来表示外,还必须考虑如何用二进制形式表示数的正、负符号和小数点。通常,把数值在计算机中的二进制表示形式称为机器数,而把它所代表的一般数学意义上用正负号和数符表示的实际数值称为真值。在计算机中,1位二进制数叫做一个比特(bit),8位叫做一个字节(Byte),即8 bit=1 Byte。1机器数数学上的数有正数和负数之

17、分。在计算机中,通常把一个数的最高位(最左侧的一位)定义为符号位,并且一般规定以二进制的0表示正号“+”,1表示负号“”,称之为数符,而把其余位表示为数值。例如,真值数(0110101)B,其机器数为10110101,机内表示如图1-1所示。10110101数符图1-1 数的机内表示形式2整数和实数在计算机内部,并不显式地表示出小数点,而是通过对小数点的位置加以规定来表示。所以,整数和实数在机内的表示是不同的。(1)整数。整数没有小数部分,因此可以认为小数点固定在数的最右边。整数可以分为无符号整数和有符号整数两类。无符号整数的所有二进制位全部用来表示数值的大小,常被用来表示计算机中的地址。有符

18、号整数通常最高位表示数的正负号,而其他位表示数值的大小。一般把计算机能够直接处理的二进制位数称为机器字长。整数表示的数值是精确的,但可以表示的数值范围受机器字长的限制。现代计算机的机器字长一般为8、16、32、64、128位等,每种情况下可以表示的整数的范围如表1-5所示。表1-5 各种字长下可表示的整数范围机器字长无符号整数有符号整数机器字长无符号整数有符号整数80255 (281)128127 (271)6402641263263116065535 (2161)3276832767 (2151)12802128121272127132023212312311例如,机器字长为8位,则整数65

19、的机内表示形式如图1-2所示。11000001图1-2 整数的机内表示形式(2)实数。在进行科学计算时,计算机处理更多的是实数。实数是既有整数部分又有小数部分的数,纯小数可看作实数的特例。因为实数可能很大或者很小,所以人们一般采用“浮点数表示法”来表示,即把一个实数的范围和精度用阶码和尾数两部分来分别表示。例如,0.3429106,其中0.3429称为尾数,6称为阶码。由于阶码可以取不同数值,使得小数点的位置不固定,对于一个实数可以有多种表示形式,所以称为浮点数表示法。例如,十进制实数12345.6789可以表示为:0.123456789105、12.345678910+3、12345.678

20、9100、1234567.89102二进制实数的表示类似,例如,1010.1011可表示为:1010.1011=21010.101011 = 210101010.11 = 2+1000.10101011在计算机中,为了提高数据表示精度,必须惟一地规定小数点的位置,因此规定浮点数必须写成规格化的形式,即当尾数不为0时,其绝对值大于等于0.5且小于1。尾数表示数值的有效数字,是纯小数,其位数将影响数的精度,其符号决定数的符号。阶码相当于数学中的指数,其大小用来指示尾数中的小数点应当向左或向右移动的位数,其位数将决定数的表示范围。在浮点数表示中,数符和阶符通常各占一位,并且约定小数点的位置在数符和尾

21、数之间。一个浮点数的机内表示形式如图1-3所示。阶符阶码数符尾数图1-3 浮点数的机内表示形式例如,设机器字长为16位,尾数为8位,阶码为6位,则二进制实数1101.010 = 0.1101012100,其机内表示形式如图1-4所示。0000100111010100图1-4 (1101.010)B的机内表示形式3常用数值编码由于机器数在计算时,如果符号位和数值位同时参与运算,则可能会产生错误结果;而如果单独考虑符号问题,又会增加运算器件的实现难度。因此,为了使计算机能够方便地对数值进行各种算术逻辑运算,必须对数值型数据进行二进制编码处理。所谓编码是采用少量的基本符号(如0和1),按照一定的组合

22、原则,来表示大量复杂多样的信息的技术。编码的优劣直接影响到计算机处理信息的速度。数值型数据的常用编码方法包括:原码、反码、补码。(1)原码。原码的编码规则是:符号位0表示正,1表示负,数值部分用该数绝对值的二进制数表示。当整数时,小数点隐含在最低位之后;当纯小数时,小数点隐含在符号位和数值位之间,均不占位。通常用X原表示数X的原码。例如,设机器字长为8位,+1原=00000001 +127原=01111111 +0原=000000001原=10000001 127原=11111111 0原=10000000显然,按原码的编码规则,零有两种表示形式。原码表示法简明易懂,与其真值的转换方便,比较容

23、易进行乘除运算。但是在进行加减运算时,原码运算很不方便。由于符号位不能和数值一样参与运算,所以要根据两数的符号情况,同号相加,异号相减,还要根据两数的绝对值大小,令大数减去小数,最后还要判断结果的符号。这样不仅要求运算器既能作加法,又能作减法,还必须附加许多条件判断的处理,最终既增加了运算器的实现复杂性,又延长了运算的时间。(2)反码。反码的编码规则是:符号位0表示正,1表示负,正数的反码等于原码,负数的反码等于原码除符号位外按位取反,即0变1、1变0。通常用X反表示数X的反码。例如,设机器字长为8位,+1反=00000001 +127反=01111111 +0反=00000000 1反=11

24、111110 127反=10000000 0反=11111111显然,按反码的编码规则,零也有两种表示形式。反码很容易由原码获得,但同样不方便运算,一般在求补码的过程中用到反码。(3)补码。补码的编码规则是:符号位0表示正,1表示负,正数的补码等于原码,负数的补码等于反码末位加1。通常用X补表示数X的补码。例如,设机器字长为8位,+1补=00000001 +127补=01111111 +0补=00000000 1补=11111111 127补=10000001 0补=00000000显然,按补码的编码规则,零有惟一的表示形式。补码的概念来源于数学上的“模”和补数。例如,将钟表的时针顺时针拨快5

25、小时和逆时针拨慢7小时,最后指示的位置相同,则称5和7互为模12情况下的补数。计算机中机器数受机器字长限制,所以是有限字长的数字系统。对于整数来说,机器字长为n位(含符号位),模是2n;对于有符号纯小数来说,模是2。求补运算通常利用反码来实现。【例】 求X=+1011,Y=1101的原码、反码和补码。解 X原=01011 Y原=11101 X反=01011 Y反=10010 X补=01011 Y补=10011采用补码进行加减运算十分方便。通过对负数的编码处理,允许符号位和数值一起参与运算,可以把减法运算转化为加法运算。不论求和求差,也不论操作数为正为负,运算时一律只做加法,从而大大简化运算器的

26、设计,加快了运算速度。例如,(9)+(5)的运算如下:9补=11110111 111101115补=11111011 + 11111011 111110010因为机器字长的限制,丢失高位1,运算结果机器数为11110010,是14的补码形式。目前,由于计算机中最多的运算是加减运算,为了简化运算器设计,加快运算速度,有些计算机在数值表示、存储、运算时均采用补码表示法,也有些计算机,数用原码进行存储和传送,运算时采用补码,还有些计算机在进行加减法时采用补码运算,而在进行乘除法时采用原码运算。4精度和溢出现代数字计算机是有限字长的数字系统,机器数表示的范围受到机器字长和数据类型的限制,一旦机器字长和

27、数据类型确定了,机器数所能表示的数的范围和精度也就确定了。所谓精度,是指可以给出的有效数字的位数。一般来说,机器字长越长,可以表示的数的范围越大,精度越高;当字长相同时,浮点数通常比整数可以表示的数的范围要大;浮点数表示时,阶码位数越多,可以表示的数的范围越大,尾数位数越多,可以表示的数的精度越高。如果一个数的大小超出了计算机所能表示的数的范围,则产生“溢出”。如果两个正数相加,结果大于机器所能表示的最大正数,称为“上溢”;如果两个负数相加,结果小于机器所能表示的最小负数,称为“下溢”。例如,字长为n位的有符号整数,最高1位为符号位,数值位为n1位,用补码表示时,数的表示范围为2n12n11,

28、一旦运算时发生结果超出此范围的情况,就产生溢出。产生溢出时,将造成运算结果错误。所以当产生溢出时,计算机状态字寄存器(PSW)的溢出标志位将自动置为1,否则为0。在计算机中有很多判断溢出的方法,一般通过逻辑电路自动检测到溢出后执行相应的中断处理。要想尽量避免产生溢出错误,在设计计算机硬件时可以考虑增加机器字长以表示更大范围的数值。1.2.2 非数值信息的表示现代计算机需要处理的信息,除了数值信息之外,还有大量的非数值信息。例如,表示文字语言、逻辑语言的数字、字母、专用符号、汉字,以及语音、图像等多媒体信息。由于数字计算机只能处理二进制数据,所以当把这些信息应用到计算机中时,都必须编写为二进制形式的代

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1