数值信息在计算机内的表示

计算机中的数值信息都是用二进制表示的。这些数值信息可以分为整数和实数两大类。这里的实数是既有整数又有小数的数。

1.整数

计算机中的整数可以分为“不带符号的整数”(或称为正整数)和“带符号的整数”两类。它们可以用8位、16位、32位甚至是64位来表示。

1.1 不带符号的整数(正整数)

我们知道,11111111是最大的8位二进制数,相当于十进制的255。因此,如果用二进制的8位数来表示,那么不带符号的整数的取值范围是0——(255)10(用二进制表示,则为:(00000000)2——(11111111)2[(28-1)10]);如果用二进制的16位数来表示,那么不带符号的整数的取值范围是0——(216-1)10;如果用二进制的32位数来表示,那么不带符号的整数的取值范围是0——(232-1)10;如果用二进制的64位数来表示,那么不带符号的整数的取值范围是0——(264-1)10

1.2 带符号的整数(整数)

带符号的整数由于是带符号的,所以必须使用一个二进位作为其符号位,一般用最高位,即最左边的一位作为其符号位。

整数和实数的机内表示,精度和溢出1.2.1 带正号(“+”)的整数(正数)

带正号的整数在计算机内的表示方法是:在其符号位上用“0”。例如用(二进制来表示):

+64——01000000;  +127——01111111

整数和实数的机内表示,精度和溢出1.2.2 带负号(“-”)的整数(负数)

带负号的整数(负数)在计算机内的有三种表示方法:原码、反码和补码。

整数和实数的机内表示,精度和溢出负数的原码表示  方法是:在其符号位上用“1”。例如:

-64)=11000000;  (-127)=11111111

整数和实数的机内表示,精度和溢出负数的反码表示  符号位上仍为1,但绝对值部分恰好与原码相反,“0”与“1”互变。例如:

-64)=10111111;  (-127)=10000000

整数和实数的机内表示,精度和溢出负数的补码表示  符号位上仍为1,但绝对值部分是在反码的最低位加“1”所得到的结果。例如:

-64)=11000000;  (-127)=10000001

由上可以看出,8个二进位表示的带符号的整数的取值范围是-127—— +127,即(-27+1)——(+27-1)之间;用16个二进位则在(-215+1)——(+215-1)之间;用32个二进位则在(-231+1)——(+231-1)之间;用64个二进位则在(-263+1)——(+263-1)之间。

只有带“-”号的整数才有三码表示。

2.实数

任何一个实数,不论是用十进制还是二进制,均可以表示为一个纯小数和一个幂的乘积。例如:

    325.125=103×(0.325125)

    -325.125=103×(-0.325125)
    325125=106×(0.325125)
    (1001.001)2=2100×(0.1001001)2
    (-1001.001)2=2100×(-0.101001)2

也就是说,任何一个实数,在计算机内部都可以用一个指数(整数)和一个尾数(纯小数)来表示。这种表示实数的方法就是“浮点表示法”。在计算机中,实数也叫做“浮点数”,而整数和小数则叫做“定点数”。

 数的表示:

    计算机中处理的数据分为数值型数据非数值型数据两大类。计算机内表示的数值型数据,又分成整数实数两大类。在计算机内部,数是以二进制的形式存储和运算的。数的正负用高位字节的最高位来表示,定义为符号位,用“0”表示正数,“1”表示负数。例如:二进制数+1101000在机器内的表示为:01101000
    整数的表示
    计算机中的整数一般用定点数表示,定点数指小数点在数中有固定的位置。整数又可分为无符号整数(不带符号的整数)和有符号整数(带符号的整数)。无符号整数中,所有二进制位全部用来表示数的大小,有符号整数用最高位表示数的正负号,其他位表示数的大小。如果用一个字节表示一个无符号整数,其取值范围是整数和实数的机内表示,精度和溢出。如果用一个字节表示一个有符号整数,其取值范围则是整数和实数的机内表示,精度和溢出
    需要注意的是,在计算机中为了便于计算,有符号整数采用的是补码表示。要求一个有符号整数的补码,对于正整 数,直接表示为二进制即可,如上面的+1101000的一个字节大小的补码表示是01101000。对于负整数,则先求出其绝对值的补码,然后按位取反 (即0变成1,1变成0),再将取反后的结果加1,例如-1101000的一个字节大小的补码表示是10011000
    实数的表示
    实数一般用浮点数表示,因为它的小数点位置不固定,所以称浮点数。它是既有整数又有小数的数,纯小数可以看作实数的特例。
    在计算机中一个浮点数由指数(阶码)和尾数两部分组成,其机内表示形式如下:

整数和实数的机内表示,精度和溢出


    其中数符和阶符分别表示尾数和阶码的符号位,在浮点数中占一位。阶码用来指示尾数中的小数点应当向左或向右移动的位数,值随浮点数数值的大小而 定,阶码的二进制位数决定了所能表示的数的范围。尾数表示数值的有效数字,其位数则依浮点数的精度要求而定,尾数的二进制位数决定了所表示的数的精度。小 数点约定在数符和尾数之间。