机器数就是数值在计算机中的表示形式,真值则是它在现实中的实际数值。可以这样简单的理解。
因为计算机只能直接识别和处理用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位。
在计算机中为了便于数值的运算和处理,对机器数定义了不同的表示方法,其中包括了数的原码、补码、反码和移码表示。以后将分别对它们进行介绍