计算机中如何表示数字(1-6讲).docx_第1页
计算机中如何表示数字(1-6讲).docx_第2页
计算机中如何表示数字(1-6讲).docx_第3页
计算机中如何表示数字(1-6讲).docx_第4页
计算机中如何表示数字(1-6讲).docx_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机中如何表示数字-01机器数与真值 机器数就是数值在计算机中的表示形式,真值则是它在现实中的实际数值。可以这样简单的理解。因为计算机只能直接识别和处理用0、1两种状态的二进制形式的数据,所以在计算机中无法按人们的日常书写习惯用正、负符号加绝对值来表示数值,而与数字一样采用二进制代码0和1来表示正、负号。这样在计算机中表示带符号的数值数据时,符号和数均采用了0、1进行了代码化。这种采用二进制表示形式,连同正负符号一起代码化的数据,称为机器数或者机器码(即,数值在计算机中的二进制表示形式)。与机器数对应,用正、负符号加绝对值来表示的实际数值称为真值。根据约定机器数是否存在符号位,机器数可以分为无符号数和带符号数。无符号数是指计算机字长的所有二进制位均表示数值。带符号数是指机器数分为符号位和数值两部分,且均采用二进制表示。一般约定最高位表示符号。例1-1: 10011001作为无符号定点整数时,真值是153;作为带符号定点整数时,第一位是符号位,1代表负号,二进制数10011001的真值是-0011001,转化成十进制是-25。对于带符号数,根据小数点位置固定与否,又可以分为定点数和浮点数。在介绍浮点数之前我们要将注意力完全放在定点数上面,要有点耐心,对定点数的理解程度决定了我们对浮点数的理解程度,因为可以将浮点数看成是对定点数的一种应用,以后就会明白了。好了,先看一看什么是定点数。定点数约定所有数据的小数点位置均是相同且固定不变的。计算机中通常使用的定点数有定点小数和定点整数两类。定点小数:对于一个长度为n位的机器数,定点小数约定小数点在符号位和最高数值位之间,如下数符(最高位,占用1位). 尾数(剩余n-1位)小数点只是一个约定,是隐含的,不占用空间。定点整数:对于一个长度为n位的机器数,定点整数约定小数点在最低数值位之后,如下数符(最高位,占用1位)尾数(剩余n-1位).小数点也是隐含的。例1-2:下的八位二进制数,我们看看它们所代表的值是多少定点小数:1.1011001 真值=-0.1011001=-0.6953125定点整数:11011001 真值=-1011001=-89真值:127=+1111111 定点整数:01111111真值:-0.125=-0.001 定点小数:1.0010000总结上面的内容,机器数的特点是:1. 符号数值化,0代表正、1代表负。通常将符号的代码放在数据的最高位;2. 小数点是隐藏的,不占用存储空间;3. 每个机器数所占据的二进制位数受机器硬件条件的限制,与机器字长有关,超过机器字长的数值要舍去。4. 因为机器数的长度是由机器的硬件规模规定的,所以机器数表示的数值是不连续的。 注:机器内部设备一次能表示的二进制位数叫机器的字长,一台机器的字长是固定的。8位长度的二进制数称为一个字节(Byte),现在机器字长一般都是字节的整数倍,如字长8位、16位、32位、64位。在计算机中为了便于数值的运算和处理,对机器数定义了不同的表示方法,其中包括了数的原码、补码、反码和移码表示。以后将分别对它们进行介绍。计算机中如何表示数字-02原码原码是一种简单、直观的机器数表示方式,其表示形式与真值的形式最为接近。上一篇中例1-2中展示的定点数采用的既是原码表示。原码规定机器数的最高位为符号位,0表示正、1表示负,数值部分在符号位后面,并以绝对值的形式给出。设x为n位二进制数,下面给出纯小数、纯整数的原码定义: x为纯小数,0=x1时,它的原码等于真值x;-1x=0时,它的原码等于1+|x|。 x为纯整数,0=x2n时,它的原码等于真值x;-2nx=0时,它的原码等于2n+|x|。例2-1:已知x,求x的原码。+0.1010110、-0.1010110、+1010110、-1010110结果:0.1010110、1.1010110、01010110、11010110真值0的原码表示:原码中真值0的表示有两种,即+0和-0。纯小数的原码,+0为0.0000000、-0为1.000000;纯整数的原码,+0为00000000、-0为10000000。原码的缺陷:0的表现形式不唯一;原码表示不便于实现加减运算。原码的加减运算过程有些类似我们自己进行加减运算的过程。当两数相加时,首先要判断两数的符号,若同号则做加法,若异号则做减法。当两数相减的时候,不禁要判断两数的符号,使得同号相减、异号相加;还要判断两数绝对值的大小,用绝对值大的数减去绝对值小的数,取绝对值大的数的符号为结果的符号。可见过程复杂不适合实现加减运算。但是原码的乘除运算可以通过数位的左移和右移来实现,还是很方便的。原码的缺陷造成实现原码加减法的硬件比较复杂。为了简化运算,让符号位也作为数值的一部分参加运算,并使所有的加减运算均以加法运算来代替,人们提出了补码表示。下一节待续。计算机中如何表示数字-03补码补码表示的引入是基于模的概念。所谓模是指一个计数器的容量。比如钟表以12为一个计数循环,即可看做以12为模。在进行钟表对时时,假设当前钟表的时针停在九点位置,要将时针拨到2点,可以采用两种方法。一种是顺时针拨动指针向前5个小时,9514,14-12=2,指针指向2点。这是因为钟表上只有12个刻度,即钟表的计数容量是12,当指针超过12点的时候钟表要重新从0点开始计时;另一种方法是逆时针转动7个小时,9-7=2,指针同样也指向2点。数学上取模的符号是mod,在对于采用12为模的钟表而言,97=(9+5)mod12,称为在模12条件下9-7等于9+7。7加5等于模12,这样的数我们称它们互为补数,即对于模12而言7是5的补数,同样5也是7的补数。由上面的计算我们可以知道对于一个确定的模而言,当需要减去一个数x时,可以用加上x对应的负数-x的补数来代替。我们还可以知道如何求补码:整数的补码等于其本身;负数的补码等于模与该数的绝对值之差。钟表记小时数的容量是12,钟表的模就是12,那计算机中计数器的容量是多少哪?在计算机中,由于硬件的运算器与寄存器都有一定的字长限制,即计算机硬件能够一次处理的二进制数据的长度是有限的,因此计算机中的运算也是有模运算的。以位数为8的二进制计数器为例,计数的范围是0000000011111111,当计数器的数值记到,11111111时,再加1,计数器达到100000000,产生溢出,最高位1被丢掉,使得计数器又从00000000开始计数。对于这个8位二进制计数器而言,产生溢出的量100000000就是计数器的模,相当与前面钟表示例中的12。对于使用n位二进制数表示数据的硬件,纯小数的具有x1.x2x3xn-1xn的形式,xn代表的是一个数位,它能表示的范围是0.0000001.111111,溢出的值是10.0000.00,它的模是2;纯整数具有x1x2x3xn-1xn的形式,能表示的范围是000000111111,溢出的值是1000000,它的模就是2n。下面按照纯小数、纯整数分别给出补码的定义。纯小数x:0=x1,补码是其自身;-1=x0,补码等于2+x。纯整数x:0=x2(n-1),补码是其自身;-2(n-1)=x=0,则x的补码为其自身,并使符号位为0;若x=0,根据补码的定义可得; 当x0X-X=0 减去一个数等于加上它的补码,因此有 X补码+-X补码 = 0 = 模 -X补码=模-X补码=X补码补码=对X的补码求补码。由上面的讨论我们可以得出对补码相反数求补的简单规则是:将X的各位(含符号位)取反,然后在最低位上加1,既得到-X补码(既,取补码的补码)。例3-4:已知X,求-X的补码。 X=01001101 -X补码=10110011 X=10110010 -X补码=01001110计算机中如何表示数字-04反码反码的实质是一种特殊的补码,其特殊之处在于反码的模比补码的模小一个最低位上的1。反码的定义: 纯小数:0=x1时,x的反码是其自身;-1x=0时,x的反码为(2-2(1-n)+x。模为2-2(1-n)。 纯整数:0=x2(n-1),x的反码是其自身;-2(n-1)x=0,则使符号位为0,数值部分与x相同,即可得到x反;若x0,由定义反码为其自身,x反码=0.0101001 x原码=11011010 x0,反码和补码都等于原码,它们是相等的,x反码=0.0101001 x补码=11011010 x0,反码的模比补码小一个最低位上的1,因此,反码要比补码小一个最低位上的1,x反码=11011001例4-2:反码中零的表示方法有两种。纯小数+0和-0的反码表示:+0反码=0.0000 (n个0)-0反码=(2-2(1-n)-0.0000=1.1111 (n个1)纯整数+0和-0的反码表示:+0反码=00000 (n个0) -0反码=(2n-1)-00000=11111 (n个1)例4-3:反码表示的范围。反码的表示范围与原码的表示范围相同,比补码少表示一个数,因为反码的模比补码少了一个最低位的1,自然也就要少表示一个数。纯小数的反码不能表示-1,纯整数的反码不能表示-2(n-1)。计算机中如何表示数字-05移码补码在进行数值比较的时候比较麻烦,因为把补码的符号部分与数值部分统一看成数值的话,则负数补码的值大于正数补码的值。为了比较数值大小方便又提出了移码的概念。移码的定义: 纯小数:-1=x1,x移码=1+x; 纯整数:-2(n-1)=x2(n-1),x移码=2(n-1)+x。根据移码的定义可知,移码是把真值在数轴上正向平移1(纯小数)或者2(n-1)(纯整数)后得到的,所以移码也被称为增码或余码。移码的实质是把真值映像到一个正数域,因此移码的大小可以直观的反映真值的大小。这样采用移码表示时,不管真值的正负,均可以按无符号数比较大小。例4-1:补码与移码的关系:纯小数: 0=x1时,x补码=x,x移码=1+x=1+x补码; -1=x0时,x补码=2+x,x移码=1+x=1+x补码-2=x补码-1。纯整数: 0=x2(n-1)时,x补码=x,x移码=2(n-1)+x=2(n-1)+x补码; -2(n-1)=x0时,x补码=2n+x,x移码=2(n-1)+x=2(n-1)+x补码-2n =x补码-2(n-1)综上,移码与补码数值部分相同,符号位相反,因此若已知x补码,只需将x补码的符号位取反,数值部分不变,即可得到x反码,反之亦然。注:补码的计算,一般计算可以根据定义,先求出增加后的真值,在将真值转换成无符号的二进制数。后面在介绍浮点数的时候我们还会接触到移127码,即将原值增加127,它的计算方法可以采用x真值+127无符号二进制数。如果已知了x的补码,我们也可以由补码与移码之间的关系直接求得。例4-2:求下列各数的补码和移码,1011010、-1011010。 1011010补码=01011010 1011010移码=11011010 -1011010补码=10100110 -1011010补码=00100110例4-3:真值0的反码表示、移码的表示范围。真值0的移码表示只有一种形式:+0移码=-0移码=1000。无论是由移码的定义,还是由移码与补码的关系都可以证明。移码的表示范围与补码相同,纯小数的移码可以表示到真值-1,-1移码=0.000;纯整数的移码可以表示到真值-2(n-1),-2(n-1)移码=0000。例4-4:设某计算机的字长为8位,求真值-73在各码制下的表现形式。真值=-73原码=11001001补码=10110111反码=10110110移码=00110111计算机中如何表示数字-06浮点数如果使用前面介绍的定点数来进行数据的运算会存在一些问题:1.所能表示的数据范围有限,受计算机硬件字长的限制;2.参与运算的数据必须统一转化成纯小数或者纯整数,这样会损失精度或者产生溢出;3.数据统一转化成纯小数或者纯整数的过程中会产生大量的0,从而浪费存储空间。所谓浮点数是指数据中的小数点位置是可以浮动的。目的就是兼顾数值的表示范围和精度的要求。我们知道任何的实数都可以表示成S*R(e)的形式。S称为尾数,代表所表示数字的有效数字;R称为基值,代表所表示数的进制,二进制数的基值就是2;e称为阶码,代表所表示数小数点所在的位置。例如:值为345.5的十进制数可以按照上面的表现形式,表示成+0.3455*10(+3);值为-110011.1的二进制数可以表示成-0.1100111*2(+6)。但是显然它们的表示形式并不唯一。如何使用一串连续的二进制数表示这么复杂的结构哪?在现实机器中,通常采用如下的表示格式: 数符(1位)阶符(1位)阶码(e)尾数(S) 数符反映了尾数的符号,数符占用最高位,它和尾数组合在一起是一个纯小数,一般可以用补码或者移码表示;阶符反映了阶码的符号,占用第二位,它和阶码组合在一起是一个纯整数,一般可以用补码或者原码表示。基数是一个隐含的常数,不用在数据格式中显示的给出。例如:假设我们使用16位二进制数表示一个浮点数,规定阶码和阶符占用8位,采用纯整数原码表示,尾数和尾符占用8位,采用纯小数原码表示。设计一个浮点数,0 1 1100110 0000110 蓝色是阶码,红色是尾码,它表示+(0.0000110)*2(-1100110)=+(0.046875)*2(-102)以上是我们自己设计的浮点数表示格式。现实中还要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论