计算机科学第2章-数据的表示与编码

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

计算机学科导论第2章数据的表示与编码本章教学目的1.理解数字系统和数制的概念;2.掌握二进制、十进制及其他进制的计数方法,掌握不同进制间的转换方法;3.掌握二进制整数和实数的表示方法4.掌握二进制原码、反码、补码的表示方法;5.掌握二进制数的算术运算;6.了解英文字符、汉字字符等的编码方式;7.了解各种数据类型的编码方式及在计算机中存储本章教学内容1.数和数制2.数值的表示与运算3.非数值信息的编码1.掌握进位计数制和数制之间的转换2.了解定点数和浮点数3.了解带符号数的表示方法4.掌握字符编码5.了解非字符信息的编码本章学习重点第一节数和数制2.1数和数制本节主要内容1.数字系统2.计数与进制3.二进制和位4.八进制和十六进制5.不同进制间的转换设计计算机的最初目的是进行数值计算,计算机中最早表示的数据就是各种数字。随着发展,现代计算机中数据以不同的形式呈现,如:数字、文字、图像、声音和视频等。而在计算机内部,这些数据都是以数字的形式存储和处理的。2.1数和数制数据:对事实、概念或指令的一种特殊表达形式,可以用人工方式或自动化装置进行通信、翻译转换或加工处理。一般计算机中的数据包含以下两类:——数值型数据:具有特定值的一类数据,可用来表示数量的多少,可比较其大小。——非数值型数据:具有特定值的一类数据,可用来表示数量的多少,可比较其大小。2.1数和数制计算机表示信息的途径:通过使用数字对各式各样的信息按照进行一定的规则进行编辑,最终变换为计算机易于识别的信息,这个过程称为数字化编码。数字化编码:用少量最简单的基本符号,对大量复杂多样的信息进行一定规律的组合。编码的两大基本要素:基本符号的种类(例如二进制的“0”和“1”)组合规则现代计算机内部采用二进制符号进行信息编码。2.1.1数字系统计算机中使用位置化数字系统。位置化数字系统中,在数字中符号所占据的位置决定了其表示的值。在该系统中,一个数字这样表示:±(Sk-1…S2S1S0.S-1S-2…S-1)b其值为:n=±Sk-1×bk-1+…+S1×b1+S0×b0+S-1×b-1+S-2×b-2+…+S-1×b-l其中,S是一套符号集;b是底(或基数),它等于S符号集中的符号总数,其中Si指该符号的位置是i。2.1.2计数与进制十进制计数法的发明可能源于人类习惯使用10个手指计数。玛雅文明发明了二十进制数字系统,称为玛雅数字系统。十二进制可能源于一只手除拇指以外的四个手指的指节个数。六十进制是苏美尔人和美索不达米亚人使用的。六十进制系统被认为是十进制和十二进制合并过程中产生的。巴比伦文明的六十进制可能与天文历法计时有关。十六进制曾经在中国的重量单位上使用过。2.1.3二进制和位二进制数字系统是最简单的数字系统。其底为2,数字的取值范围是0和l,计数规则是“逢2进位”。二进制数字系统中只有两个数字0和1。位是信息的基本单位,也是存储在计算机中的最小单位。位的英文是“bit”(比特)代表“binarydigit”,1位具备最少的信息量,更复杂的信息需要多位比特来表示。2.1.4八进制和十六进制数据在计算机中最终以二进制的形式存在,但是二进制数不适合人的书写和思考。用较大的进制数可以有效缩短数字串的长度,于是引入了八进制和十六进制。进制越大,数的表达长度也就越短。八进制是逢8进位,用“0”~“7”这8个符号组成数字表示,其基数为8。十六进制是逢16进位,用“0”~“9”这10个数字,再加上“A”~“F”6个字母共16个符号组成数字表示,其基数为16。为避免混淆,在使用不同进制时,采用后缀表示进制,比如用2、8、10、16表示二、八、十和十六进制数;也可用字母表示,通常用D表示十进制,用B表示二进制,用O或Q表示八进制,用H表示十六进制数。例如十六进制数FDA59B可以表示为(FDA59B)16或FDA59BH。进位制二进制八进制十进制十六进制规则逢二进一逢八进一逢十进一逢十六进一基数R=2R=8R=10R=16基本符号0,10,1,2,…,70,1,2,…,90,1,..,9,A,..,F权2i8i10i16i形式表示BODH计算机科学中常用的各种进制数的表示2.1.5不同进制间的相互转换1.任意进制数转换为十进制数2.十进制数转换任意进制数十进制数转换为二进制十进制数转换为八进制十进制数十六进制数3.二进制数与十六进制数的转换二进制数转换为八、十六进制数八、十六进制数转换为二进制数2.1.5不同进制间的相互转换1-n-miiim-m-1-1-00112-n2-n1-n1-nm-2-1-0122-n1-nbS)bSbSbSbSbSbS()SS.SSSSS(S)(RS1.任意进制数转换为十进制数转换规则:将(100.11)2转换为十进制数解:(100.11)2=(1×22)+(0×21)+(0×20)+(1×2-1)+(1×2-2)=(4.75)10(2AF5)16=(2×163)+(10×162)+(15×161)+(5×160)=(2×4096)+(10×256)+(15×16)+(5×1)=(10997)10【例1-2】2.1.5不同进制间的相互转换任一个十进制数X,可以表示为X=X整数+X小数。将这两部分分开转换整数部分的转换:采用“除基数求余法”,转换方法为:将X整数连续用基数除,求得余数(1或0)分别为K0、K1、K2、…,直到商为0,所有余数排列Kn-1Kn-2…K2K1K0即为所转换的所求进制整数部分。小数部分的转换:采用“乘基数取整法”。转换方法为:连续用基数乘X小数,依次求得各整数位(0或1)K-1、K-2、…、K-m,直到乘积的小数部分为0。在小数转换过程中,出现Fi恒不为0时,可按精度要求确定所求进制小数的位数。2.十进制数转换为任意进制数转换规则:十进制数120转换成八进制数。要将120转换为8进制,先将要转换的数120除以8,得到商15和余数0;把商15作为新的源继续除以8,得到商1和余数7;再把商1作为新的源继续除以8,得到商0和余数1;最后将所有余数逆序排列得到最终结果为:170。被除数(源)计算过程(除)商(新源)余数(目标)120120/81501515/81711/801整数部分转换将十进制数0.625转换为二进制数。因为0.625没有整数部分,该例子显示小数部分如何计算。这里是以2为底。在左边一列写上这个十进制数。连续乘2,并记录结果的整数和小数部分。小数部分作为新源,整数部分作为目标。当小数部分为0,或达到足够的位数时结束。结果是0.625=(0.101)2。被乘数(源)计算过程(乘)小数部分(新源)整数部分(目标)0.6250.625×20.2510.250.25×20.500.50.5×201十进制数转换成其他进制数,请大家用类似的方法尝试,通常用纸笔就可以完成。小数部分转换2.1.5不同进制间的相互转换二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。反之亦然。如果一个二进制数很长,我们需要将它转换成10进制数时,除了前面学过的方法是,我们还可以先将这个二进制转换成16进制,然后再转换为10进制。3.二进制数和十六进制数互相转换进位制二进制八进制十进制十六进制规则逢二进一逢八进一逢十进一逢十六进一底281016数符集0,10,1,2,…,70,1,2,…,90,1,..,9,A,..,F权2i8i10i16i表示BODH进制转换表第二节数值的表示与运算2.2数值的表示与运算本节主要内容:1.整数的表示2.实数的表示3.位的算术运算2.2数值的表示与运算计算机只能直接识别和处理用0,1两种状态表示的二进制形式的数据,在计算机中无法按人门日常的书写习惯用正、负号加绝对值来表示数值,需要用二进制代码0和1来表示正负号。计算机表示带符号的数值时,数符和数据均采用0,1进行了代码化。这种采用二进制形式的连同数符一起代码化的数据,统称为机器数或机器码。与机器数对应的用正、负符号加绝对值来表示的实际数值称为数的真值。机器数可分为无符号数和带符号数两种。无符号数是指计算机字长的所有二进制位均表示数值。带符号数是指机器数分为符号和数值部分,且均用二进制代码表示。2.2.1整数的表示1.无符号整数无符号整数在计算机中的应用非常广泛。将一个无符号整数表示为一连串的二进制数字序列。2.有符号整数在实际中存在大量负数。将2k个bit中,专门用一个bit表示正负符号,这样将表示数一分为二,一半表示正数,另一半表示负数。这种方法称为符号位表示法,即原码表示法;方法之二:将一个正数的所有位全部取反,即得到该正数所对应的负数编码,称之为反码表示法。不同的编码方法会导致不同的加法器逻辑复杂度。前面的两种编码方法,符号位法和反码表示法,在硬件逻辑设计上都相当复杂。因此,需要设计更适合硬件操作的编码方案,于是有了补码表示法。几乎目前所有的计算机都采用这种编码方式。2.2.1整数的表示3.原码、反码和补码数值有正负之分,所谓原码是用一个数的最高位存放符号(0为正,1为负),后续的其他位与数的真值相同。数值的反码表示法是用最高位存放符号,并将原码的其余各位逐位取反。反码的取值空间和原码相同且一一对应。负数取反码后会出现(-0)。而零是没有正负之分的,于是引入了补码概念。在补码表示法中,正数的补码表示与原码相同,即最高符号位用0表示正,其余位为数值位。而负数的补码则为它的反码、并在最低有效位(即D0位)加1所形成。2.2.1整数的表示4.原码、反码和补码之间的转换原码、反码和补码这三种编码的关系特点:1)正数的3种编码都等于真值本身,而负数各不相同。2)符号位都在最高位,补码和反码的符号位可作为数值位的一部分看待,与数值位一起参加运算,但是原码的符号位不允许和数值位一样看待,需要分开处理。3)真值零的原码和反码都有两种不同的表示形式,而补码的表示形式只有一种。2.2.1整数的表示4.原码、反码和补码之间的转换正数的原码、反码和补码的表示形式是相同的,而负数则各不相同,所以3种码制之间的相互转换实际上就是其负数形式的转换。1)将反码表示的数据转换成原码。转换方法:负数的符号位保持不变,数值部分逐位取反。2)将补码表示的数据转换成原码。转换方法:利用互补的道理对补码再次求补即得到原码。3)将原码表示的数据转换成补码。转换方法:负数的符号位保持不变,数值部分逐位取反后,最低位加1便得到负数的补码。2.2.2实数的表示实数是带有整数部分和小数部分的数字。用于维持正确度或精度的解决方法是使用浮点表示法。1.规范化为了使表示法的固定部分统一,科学计数法(用于十进制)和浮点表示法(用于二进制)都在小数点左边使用了唯一的非零数码。这称为规范化。2.符号、指数和尾数在一个数规范化之后,计算机中只存储了一个数的三部分信息:符号,指数,和尾数(小数点右边的位)。3.余码表示法为了让正的和负的整数都可以作为无符号数存储,计算机通常采用余码表示法。在余码系统中,使用一个正整数(称为一个偏移量)加到每个数字中,用于把他们统一移到非负的一边。这个偏移量的值是2m-1-1,m是内存单元存储指数的大小。2.2.3位的算术运算算术运算包括加,减,乘,除等等。适用于整数和浮点数。1.整数的算术运算所有加,减,乘,除等的算术运算均适用于整数。加和减是基本运算形式。乘法运算可以在软件中通过连加的方法,或在硬件中通过其他技术实现。除法运算可以在软件中通过连减的方法,或在硬件中通过其他技术执行。对整数的所有形式都可以进行加和减的运算。现在在计算机中整数只以补码形式存储。二进制补码中加法就像十进制中的加法一样:列与列相加,如果有进位,就加到下一列上。但是,注意处理二进制数不象处理十进制数一样。当两位相加,结果是0或1。在加法中,得到一个1的进位需要进到下一列上。二进制补码中两个整数相加的法则:2个位相加,将进位加到下一列。如果最左边的列相加后还有进位,则舍弃它。2.2.3位的算术运算1.整数的算术运算【例1-7】用二进制补码表示方法计算17加

1 / 54
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功