计算机中如何表示数字(1-6讲)

上传人:豆浆 文档编号:751117 上传时间:2017-05-13 格式:DOCX 页数:9 大小:27.44KB
返回 下载 相关 举报
计算机中如何表示数字(1-6讲)_第1页
第1页 / 共9页
计算机中如何表示数字(1-6讲)_第2页
第2页 / 共9页
计算机中如何表示数字(1-6讲)_第3页
第3页 / 共9页
计算机中如何表示数字(1-6讲)_第4页
第4页 / 共9页
计算机中如何表示数字(1-6讲)_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《计算机中如何表示数字(1-6讲)》由会员分享,可在线阅读,更多相关《计算机中如何表示数字(1-6讲)(9页珍藏版)》请在金锄头文库上搜索。

1、计算机中如何表示数字-01 机器数与真值 机器数就是数值在计算机中的表示形式,真值则是它在现实中的实际数值。可以这样简单的理解。因为计算机只能直接识别和处理用 0、1 两种状态的二进制形式的数据,所以在计算机中无法按人们的日常书写习惯用正、负符号加绝对值来表示数值,而与数字一样采用二进制代码 0 和 1 来表示正、负号。这样在计算机中表示带符号的数值数据时,符号和数均采用了0、 1 进行了代码化。这种采用二进制表示形式,连同正负符号一起代码化的数据,称为机器数或者机器码(即,数值在计算机中的二进制表示形式) 。与机器数对应,用正、负符号加绝对值来表示的实际数值称为真值。根据约定机器数是否存在符

2、号位,机器数可以分为无符号数和带符号数。无符号数是指计算机字长的所有二进制位均表示数值。带符号数是指机器数分为符号位和数值两部分,且均采用二进制表示。一般约定最高位表示符号。例 1-1: 10011001 作为无符号定点整数时,真值是 153;作为带符号定点整数时,第一位是符号位,1 代表负号,二进制数 10011001 的真值是-0011001,转化成十进制是-25。对于带符号数,根据小数点位置固定与否,又可以分为定点数和浮点数。在介绍浮点数之前我们要将注意力完全放在定点数上面,要有点耐心,对定点数的理解程度决定了我们对浮点数的理解程度,因为可以将浮点数看成是对定点数的一种应用,以后就会明白

3、了。好了,先看一看什么是定点数。定点数约定所有数据的小数点位置均是相同且固定不变的。计算机中通常使用的定点数有定点小数和定点整数两类。定点小数:对于一个长度为 n 位的机器数,定点小数约定小数点在符号位和最高数值位之间,如下数符(最高位,占用 1 位). 尾数(剩余 n-1 位)小数点只是一个约定,是隐含的,不占用空间。定点整数:对于一个长度为 n 位的机器数,定点整数约定小数点在最低数值位之后,如下数符(最高位,占用 1 位)尾数(剩余 n-1 位).小数点也是隐含的。例 1-2:下的八位二进制数,我们看看它们所代表的值是多少定点小数:1.1011001 真值=-0.1011001=-0.6

4、953125定点整数:11011001 真值=-1011001=-89真值:127=+1111111 定点整数:01111111真值:-0.125=-0.001 定点小数:1.0010000总结上面的内容,机器数的特点是:1. 符号数值化,0 代表正、1 代表负。通常将符号的代码放在数据的最高位;2. 小数点是隐藏的,不占用存储空间;3. 每个机器数所占据的二进制位数受机器硬件条件的限制,与机器字长有关,超过机器字长的数值要舍去。4. 因为机器数的长度是由机器的硬件规模规定的,所以机器数表示的数值是不连续的。注:机器内部设备一次能表示的二进制位数叫机器的字长,一台机器的字长是固定的。8位长度的

5、二进制数称为一个字节(Byte) ,现在机器字长一般都是字节的整数倍,如字长 8位、16 位、32 位、64 位。在计算机中为了便于数值的运算和处理,对机器数定义了不同的表示方法,其中包括了数的原码、补码、反码和移码表示。以后将分别对它们进行介绍。计算机中如何表示数字-02 原码原码是一种简单、直观的机器数表示方式,其表示形式与真值的形式最为接近。上一篇中例 1-2 中展示的定点数采用的既是原码表示。原码规定机器数的最高位为符号位,0 表示正、1 表示负,数值部分在符号位后面,并以绝对值的形式给出。设 x 为 n 位二进制数,下面给出纯小数、纯整数的原码定义: x 为纯小数,0=0,则 x 的

6、补码为其自身,并使符号位为 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 反码反码的实质是一种特殊的补码,其特殊之处在于反码的模比补码的模小一

7、个最低位上的1。反码的定义: 纯小数:0=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

8、 的反码表示:+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)

9、 ,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 时,

10、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补码=01

11、011010 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反码=1011

12、0110移码=00110111计算机中如何表示数字-06 浮点数如果使用前面介绍的定点数来进行数据的运算会存在一些问题:1.所能表示的数据范围有限,受计算机硬件字长的限制;2.参与运算的数据必须统一转化成纯小数或者纯整数,这样会损失精度或者产生溢出;3.数据统一转化成纯小数或者纯整数的过程中会产生大量的0,从而浪费存储空间。所谓浮点数是指数据中的小数点位置是可以浮动的。目的就是兼顾数值的表示范围和精度的要求。我们知道任何的实数都可以表示成S*R(e)的形式。S 称为尾数,代表所表示数字的有效数字;R 称为基值,代表所表示数的进制,二进制数的基值就是 2;e 称为阶码,代表所表示数小数点所在的位

13、置。例如:值为 345.5 的十进制数可以按照上面的表现形式,表示成+0.3455*10(+3);值为-110011.1 的二进制数可以表示成-0.1100111*2(+6) 。但是显然它们的表示形式并不唯一。如何使用一串连续的二进制数表示这么复杂的结构哪?在现实机器中,通常采用如下的表示格式:数符(1 位)阶符(1 位)阶码(e)尾数(S)数符反映了尾数的符号,数符占用最高位,它和尾数组合在一起是一个纯小数,一般可以用补码或者移码表示;阶符反映了阶码的符号,占用第二位,它和阶码组合在一起是一个纯整数,一般可以用补码或者原码表示。基数是一个隐含的常数,不用在数据格式中显示的给出。例如:假设我们

14、使用 16 位二进制数表示一个浮点数,规定阶码和阶符占用 8 位,采用纯整数原码表示,尾数和尾符占用 8 位,采用纯小数原码表示。设计一个浮点数,0 1 1100110 0000110 蓝色是阶码,红色是尾码,它表示+(0.0000110)*2(-1100110)=+(0.046875)*2(-102)以上是我们自己设计的浮点数表示格式。现实中还要考虑两个问题:1.要可能多的保留有效数字;2.保证浮点数的表示唯一。所以在计算机中,浮点数通常都采用规格化表示方法,它的原则是:1.尽可能占满尾数的位数,以保留更多的有效数字;2. 格式固定,保证浮点数表示的唯一性。1.占满尾数。若尾数采用原码表示,

15、尾数具有 0.1.或者 1.1.的形式会使有效数字最长( 既,要求位数 S 满足 (1/2)=|S|1),因为这种形式省略了第一个 1 之前所有的 0;但是如果是使用补码表示则要求位数具有 0.1.或则 1.0.的形式( 既,满足-1=S(-1/2)或者(1/2)=S1, 这样才会将小数中第一位 1 之前的 0 省略掉)。2.浮点数都采用规格化的浮点数存储和参加运算,保证了同一个数的表示形式是唯一的。 有了浮点数的概念我们可以讨论两个问题:1.浮点数的表示范围。机器数因为受表示长度的限制是不连续的,对纯整数和纯小数我们可以讨论最大最小值;浮点数则存在最小负数、最大负数、最小正数、最大正数,以及由它们作为边界构成的上溢区、下溢区。2.从浮点数的数据格式中可以看出来,尾数的位数决定了数据表示的精度,增加尾数的尾数可以增加有效数字的位数,提高数据表示的精度。阶码的位数决定了数据表示的范围,增加阶码的位数可以扩大数据表示的范围。因此在字长一定的条件下,合理的分配阶码和尾码的位数以达到表示精度和表示范围的平衡。为此在很多机器中设置了单精度(一个字长表示一个浮点数)和双精度浮点数 (两个字长表示一个浮点数 )格式。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号