黑马程序员技术交流社区
标题:
计算机中的数据存储,解决基础知识疑惑
[打印本页]
作者:
mm2015
时间:
2015-12-13 23:14
标题:
计算机中的数据存储,解决基础知识疑惑
3.5.1 定点数和浮点数的概念
在计算机中,数值型的数据有两种表示方法,一种叫做定点数,另一种叫做浮点数。
所谓定点数,就是在计算机中所有数的小数点位置固定不变。定点数有两种:定点小数和定点整数。定点小数将小数点固定在最高数据位的左边,因此,它只能表示 小于1的纯小数。定点整数将小数点固定在最低数据位的右边,因此定点整数表示的也只是纯整数。由此可见,定点数表示数的范围较小。
为了扩大计算机中数值数据的表示范围,我们将12.34表示为0.1234×102,其中0.1234叫做尾数,10叫做基数,可以在计算机内固定下来。 2叫做阶码,若阶码的大小发生变化,则意味着实际数据小数点的移动,我们把这种数据叫做浮点数。由于基数在计算机中固定不变,因此,我们可以用两个定点数 分别表示尾数和阶码,从而表示这个浮点数。其中,尾数用定点小数表示,阶码用定点整数表示。
在计算机中,无论是定点数还是浮点数,都有正负之分。在表示数据时,专门有1位或2位表示符号,对单符号位来讲,通常用“1”表示负号;用“0”表示正号。对双符号位而言,则用“11”表示负号;“00”表示正号。通常情况下,符号位都处于数据的最高位。
3.5.2 定点数的表示
一个定点数,在计算机中可用不同的码制来表示,常用的码制有原码、反码和补码三种。不论用什么码制来表示,数据本身的值并不发生变化,数据本身所代表的值叫做真值。下面,我们就来讨论这三种码制的表示方法。
1. 原码
原码的表示方法为:如果真值是正数,则最高位为0,其它位保持不变;如果真值是负数,则最高位为1,其它位保持不变。
【例1】写出13和 –13的原码(取8位码长)
解:因为13=(1101)2,所以13的原码是00001101,-13的原码是10001101。
采用原码,优点是转换非常简单,只要根据正负号将最高位置0或1即可。但原码表示在进行加减运算时很不方便,符号位不能参与运算,并且0的原码有两种表示方法:+0的原码是00000000,-0的原码是10000000。
2. 反码
反码的表示方法为:如果真值是正数,则最高位为0,其它位保持不变;如果真值是负数,则最高位为1,其它位按位求反。
【例2】写出13和 –13的反码(取8位码长)
解:因为13=(1101)2,所以 13的反码是00001101,-13的反码是11110010。
反码跟原码相比较,符号位虽然可以作为数值参与运算,但计算完后,仍需要根据符号位进行调整。另外0的反码同样也有两种表示方法:+0的反码是00000000,-0的反码是11111111。
为了克服原码和反码的上述缺点,人们又引进了补码表示法。补码的作用在于能把减法运算化成加法运算,现代计算机中一般采用补码来表示定点数。
3. 补码
补码的表示方法为:若真值是正数,则最高位为0,其它位保持不变;若真值是负数,则最高位为1,其它位按位求反后再加1。
【例3】写出13和 –13的补码(取8位码长)
解:因为13=(1101)2,所以 13的补码是00001101,-13的补码是11110011。
补码的符号可以作为数值参与运算,且计算完后,不需要根据符号位进行调整。另外,0的补码表示方法也是唯一的,即00000000。
3.5.3 浮点数的表示方法
浮点数表示法类似于科学计数法,任一数均可通过改变其指数部分,使小数点发生移动,如数23.45可以表示为:101×2.345、 102×0.2345、103×0.02345等各种不同形式。浮点数的一般表示形式为: N=2E ×D,其中,D称为尾数, E称为阶码。如图3.1所示,为浮点数的一般形式。
图3.1 浮点数的一般形式
对于不同的机器,阶码和尾数各占多少位,分别用什么码制进行表示都有具体规定。在实际应用中,浮点数的表示首先要进行规格化,即转换成一个纯小数与2m之积,并且小数点后的第一位是1。
【例4】写出浮点数(-101.11101)2的机内表示(阶码用4位原码表示,尾数用8位补码表示,阶码在尾数之前)
解:(-101.11101)2=(-0.10111101)2×23
阶码为3,用原码表示为 0011
尾数为-0.10111101,用补码表示为1.01000011
因此,该数在计算机内表示为:00111.01000011
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2