前面已经讨论了把十进制数转换成二进制数的方法,数值信息在计算机内的表示方法就是用二进制来表示。但是,在生活和科学计算中,数值还有正数和负数之分,因此还必须能够处理正数和负数。在计算机中,如果再对数的正、负符号进行编码,就可以在计算机里表示十进制数了。为了运算简单,在不同的场合还采用了原码、反码、补码等不同的编码方法,采用“定点数”和“浮点数”的方式来分别表示整型数和实型数。在讨论数值数据的编码之前,先解释一下什么是编码。
所谓编码,就是按照一定的规则以固定的顺序排列字符,并以此作为记录、存储、传递、交换的统一内部特征,这个字符排列顺序被称为“编码”。编码可以理解为处理的过程,也可以理解为这个过程产生的结果。
1.基本概念
(1)机器数和真值
图2-1 十进制数69表示成8位二进制数
若用n(不失一般性,设n=8,其他的位数可以类推,下同)位二进制数表示一个数,以十进制数69为例,那么可以表示成如图2-1所示形式。其中:Bi(i为0~7)是一位二进制数;B7是最高有效位,并当做符号位,通常用0表示正号,1表示负号;B0是最低有效位。对于数a=+69和b=-69则可分别表示为:
a:01000101
b:11000101
为了区别,将数(连同符号)在机器中的这种编码表示称为机器数,而将原来的数值称为真值。如:01000101和11000101都是机器数,而+69和-69则分别是它们对应的真值。
(2)带符号数和无符号数
机器数的表示形式实际上就是把数的符号数码化了,所以它既能表示数的绝对值又能表示数的符号。这种表示方法所表示的数叫作带符号数。有时需要把全部有效位(这里仍设8位)都用以表示数的绝对值,即没有符号位,这种方法表示的数叫作无符号数。若将上述a,b的机器数视为无符号数,则它们的值分别为69和197。
为满足算法和其他需要,计算机里常用原码、反码和补码表示数值数据。
2.数的原码表示(www.xing528.com)
数的原码表示规则为:将符号位(即最高位)用来表示数的符号,0表示正数,1表示负数,而其他位按一般的方法表示数的绝对值,用这种方法得到的数码就是该数的原码,例如:
x=(+103)10 [x]原=(01100111)2
y=(-103)10 [y]原=(11100111)2
3.数的反码表示
数的反码表示规则为:将符号位(即最高位)用来表示数的符号,0表示正数,1表示负数。正数的反码与原码相同,负数的反码为其原码除符号外的各位按位取反(即0变1,而1变0)。例如:
x=(+103)10 [x]原=[x]反=(01100111)2
y=(-103)10 [y]原=(11100111)2 [y]反=(10011000)2
4.数的补码表示
数的补码表示规则为:将符号位(即最高位)用来表示数的符号,0表示正数,1表示负数。正数的补码与反码及原码相同,负数的补码为其反码在其最低位加1,即原码除符号外的各位按位取反(即0变1,而1变0),再末尾加1。
例2-11:
x=(+103)10 [x]补=[x]原=[x]反=(01100111)2
y=(-103)10 [y]原=(11100111)2 [y]反=(10011000)2 [y]补=(10011001)2
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。