计算机编码课件.pdf
《计算机编码课件.pdf》由会员分享,可在线阅读,更多相关《计算机编码课件.pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机编码在计算机用户中普遍存在的一个误解是计算机对数值计算的绝对准确性。也就是说,如果您做乘法:3 x(1/3)您本来期望的到 个准确的1 这个结果。但是您发现计算机并没有给出这个结果,而却只是一个近似的值,类似于0.99999999923475。这看起来似乎是系统的一个“臭虫”,但是更令人吃惊的是,对,计算机就是那样工作的(除了在计算机代数系统中)。这篇文章将详细解释这个问题。位、字节、半字节和无符号整数几乎所有的计算机用户都了解“位”的概念。在计算机中,通过开关变化设置表达值。或 1。如果您有两个位可供选择,您可以很容易得到这样四个不同的状态:00 01 10 11如果您有三个位,您可以
2、把它们表示成八种状态:000 001 010011 100 101 110 111每当您增加一个位时,您将得到两倍的状态。很多计算机使用八位来表示信息,有些则为多八位,例 如 16位,32位 或 64位。8 位作为一个组通常被用作基础单位,并且使用另外一个词“比特”(byte)。计算机的处理器一次处理一个八位或八位的倍数个信息。储存器使用一个八位或多个八位来存储数据。事实上,在一些情况下使用四位来处理问题会更方便,这种四位一组的数据通常被称为一个nybble%但实际上,更常用的是“比特”而不是“nybble”。一个nybble可以为16种不同的情况编码,例如数字。到 15。大体上,使用任何序列
3、的排列来表示不同的16种状态是可以的,但在实际的应用通常是这样的:0000=十进制0 1000=十进制8 0001=十进制11001=十进制9 0010=十进制21010=十进制10 00制=十进制3 1011=十进制11 0100=十进制4 1100=十进制120101=十进制5 1101=十进制13 0110=十进制6 1110=十进制14 0111=十进制71111=十进制15这样的表示是很自然的,因为它符合我们所熟悉的十进制数表示方法。例如,给定个十进制数:7531我们很自然地把它理解为:7 x 1000+5 x 100+3 x 10+1 x 1或者,使 用 10的嘉来表示:7x 10
4、 3+5x 10 2+3x 10 1+1 x 10 0注意任何数(除了 0)的 0 次寨都是1。数据中的每个数字表示从0 到 9 的值,这样我们有10个不同的数字,那就是我们把它称为“十进制”的原因。每个数字可以通过10的某次嘉来决定它的位置。这听起来很复杂,但实际上并不是这样的。这正是当您读一个数字的使用认为是理所当然的事情,您甚至都不同仔细思考它。类似地,使用二进制编码就像上面所说的那样,值 13是这样编码的:1101每一个位置有两个数字可以选择,所以我们称它为“二进制”。因此,它们的位置是这样决定的:1101=1 x 23+1 x 22+0 x 2 1 +1 x 20=1 x 8+1 x
5、 4+0 x 2+1 x 1 =13(十进制)注意这里使用了 2 的事:1、2、4 和 8。痴迷于计算机的人通常可以记住2 的从2 到 16次塞,这并不是因为他们的记忆力,而是因为它们大量的使用这些数字:20=1 28=256 2 1 =2 2 9 =51222=42 10=1 024 2 3=82 11=2048 2 4=162 12=4 096 2 5=32 2 13=8 192 2 6=64 2 14=16 384 2 7=1282 15=32 768 2 16=65 536注意的是,根据公制单位,值 2 10=1 024通常被提及为“kilo”(千),或简写成“K”,所以很多2 的高次
6、幕通常可以简写成:2 11=2 K=2 048 2 12=4K =40962 13=8 K=8 1922 14=16 K=16384215=32K=32 7682 16=64 K=65 536同样的,值 2 20=1 024 x 1 024=1 048 576通常被简写成“M”:2 21=2 M 2 22=4M而 2 3 0 曾被称为“吉”,或“G。下面我们将会大量使用这些修饰符号。有一个很微妙的话题。如果我们使用16位,我们可以得至IJ 65 536种不同的值,但是这些值是从0 到 65 535的。人们通常从1 开始数数,但是计算机是从0 开始计数的。因为这对它们来说更简便。这个小问题有时也
7、会使得计算机混淆。现在,我们得到了计算位的方法:您只能在您所有的位的范围内进行算术操作。也即是说,如果您正在使用的是16位,那您不能对65 535或更大的数据进行操作,否则您将得到一个“数据溢出”的错误。这个术语表明,您正在进行的是“有限精度”的操作。使用这种编码不能表示小数。您只能使用非小数的“整数”。使用这种编码不能表示负数。所有的数字都是“无符号数”。虽然有这种限制,但是在计算机中对于简单的增1 计数来说,“无符号整数”还是十分有用的。它们对计算机来说是很容易处理的。通常计算机使用16位或32位无符号整数,通常被称为 整数(integer)或 长整数(long integer)一个整数允
8、许对从0 到 65 535的数据进行操作,而一个长整型允许对从。到 4294967295的数进行操作。八进制和十六进制数现在让我们讨论一些偏外的话题:对二进制数字的表示方法。计算机通常使用二进制来表达数据,但是在实际中如果使用像这样的二进制:1001 0011 0101 0001那将是一件痛苦的事,并且很容易出错。通常计算机使用一个基于二进制的表达方式:八进制,或更通常使用的,十六进制。这一件听起来挺狡猾但实际上又很简单的事。如果不是这样的话,我们就不会这样使用了。在平常的十进制体系中,我们有10数 字(0 到 9)按以下方式构成排列:01 2 3 4 5 6 7 8 9 1 0 1 1 12
9、13141516171819 20 21 22.在八进制中,我们只有八个数字(。到 7)按以下方式构成排列:0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 1720 21 22 23 24 25 26.也即是说,八进制的“10”相当于十进制的“8”,八进制的“20”相当于十进制的“16”,以此类推。在十六进制中,我们只有十六个数字(0 到 9,然后是从a 到 f)按以下方式构成排列:01 2 3 4 5 6 7 8 9 a b c d e f1 0 1 1 12 13141516.也即是说,十六进制的“10”相当于十进制的“16”,十六进制的“20”相当于十进制的“3
10、2”。这些表示数值的方法都是表位置的系统,但是它们使用的不是像卜进制那样的1 0,而是分别使用8 和 16。例如:八进制756=7 x 8 2+5 x 8 1+6 x 8 0=7x64+5 x 8 +6x1=448+40+6=十进制 494十六进制3b2=3 x 162+11 x 16 1 +2 x 160=3 x 256+11 x 16+2 x 1=768+176+2=十进制 946好了,如果您还不是那么明白,不用担心。我们想说明的是,对于八进制来说,他们刚好和3 位二进制有一个完美的对应关系:000=八进制0001=八进制10 1 0=八进制2011=八进制31 0 0=八进制4101=八
11、进制51 1 0=八进制6111=八进制7类似的,一个十六进制数刚好和一个4 位的二进制数对应。0000=十六进制0 1000=十六进制8 0001=十六进制1 1001=十六进制9 0010=十六进制2 1 0 1 0=十六进制a0011=十六进制3 1011=十六进制b 0 1 0 0=十六进制41100=十六进制C0101=十六进制5 1101=十六进制d 0 1 1 0=十六进制6 1110=十六进制e 0111=十六进制7 1111=十六进制f因此,把一个很长的二进制数转换成一个八进制就变得很简便,例如:把二进制1001001101010001转化成八进制:1 001 001 101
12、 010 001 二 进 制=111521 八进制转换成十六进制会更简单:1001 0011 0101 0001=9351 十六进制但是要把它转换成十进制(37 713)就比较麻烦了。八进制和十六进制使得转换二进制机器级的数字变得简单方便。有符号整数和补码在定义了无符号二进制数后,我们就要着手定义负数了,或称为“有符号整数”。最简单的一个方法是保留一个位来表示数值的符号。这个“符号位”可以位于数值的最左边,当然也可以位于数值的最右边。如果这个符号位为0,表示数值是正的,如果这个符号位为1,表示数值是负的。这样做是可以的,虽然从人类的角度来看是最明显的解决方案,但是它对于计算机来说有可能带来一些
13、难度。例如,这种编码使得0 可以有正负两种。人们可能对此感到不可思议,但是这对计算机来说是适应的。对计算机来说,更自然的表达方式是对给定的位数的二进制数按其范围分成两半,其中前半用来表示负数。例如,在 4 位数值中,你可以得到:0000=十进制0 0001=十进制1 0010=十进制2 0011=十进制3 0100=十进制40101=十进制5 0110=十进制6 0111=十进制7 1000=十进制-8 1001=十进制-71010=十进制-6 1011=十进制-5 1100=十进制-4 1101=十进制-3 1110=十进制-21111=十进制-1现在我们得到了个“有符号整数”数字系统,使用
14、所知道的,为了一些不是很重要的原因,“补码”编码方式。对 16位有符号数字编码来说,我们可以得到范围为-32 768到 32 767的有符号数字。对一个32位的有符号编码系统来说,我们可以为从-2 147 483 648到 2 147482 647的数编码。与只改变符号位来表示负数的编码方式相比,“补码”编码方式与之有所不同。例如对于-5 来说,只对符号位编码,应该是:1101但是对于“补码”编码方式来说,则是:1011这对于符号编码来说是-3。关于为什么计算机要使用补码这种编码方式我们会在后面解释。所以,现在我们可以以二进制方式来表示正负两种不同的数值。请记住对于一个二进制数来说,只有两种解
15、释方式。如果在内存中有一个这样的二进制数值:1101-这只能解释为十进制的“13”或“-3”。定点小数这种格式通常被用于商业计算(例如在电子表格或COBOL中);因为在这里,丢弃小数位来记录金钱是不能接受的。因此了解二进制如何存贮小数是十分有用的。首先去我们必须决定要用多少位来存贮小数部分和多少位来存储整数部分。假设我们使用32位来表示这种格式,那么我们用16位表示整数部分,16位来表示小数部分。小数部分怎么使用呢?这沿用了表示整数的方式:如果8 位接下来是4 位,是 2 位,1 位,那么当然接下来就是半位,1/4位 和 1/8位等等了。例如:整数位 小数位 0.5=1/2=00000000
16、00000000.10000000 00000000 1.25=1 1/4=00000000 00000001.01000000 00000000 7.375=7 3/8=0000000000000111.01100000 00000000有一点棘手的是,如果您要表达1/5(十进制的0.2),那您不能得到精确的数值表达方式。最好的方法只能是:13107/65536=00000000 00000000.00110011 00110011=0.1999969.十进缶U13108/65536=00000000 00000000.00110011 00110100=0.2000122.十进制然而不,您
17、不能只样做,既是你有更多的数位来表达。问题是,一些小数使用二进制的方式不能精确地表达出来。除非您使用一个特殊的办法。这个特殊的办法是分别使用两个数字来表达小数:一个是分子,一个是分母。然后您可以使用学校学习的加、减、乘、除来得到它们。然而,这些方法不能表达更高级的数字(例如平方根),或者如果这两个分母的最小公倍数很大的话,那就难以使用。这就是使用定点小数表达小数的优点。浮点小数当我们使用了有符号和无符号的数值表达方式时。如果遇到连32位也不足以表达的大范围的数,或也许可以表达,但我们必须为此放弃小数位时,我们可以选择的以获得更大范围的数值的表达方式的方法是使用“浮点小数”格式而抛弃“定点小数”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 编码 课件
限制150内