各种数值在计算机中表示的形式称为机器数,其特点是使用二进制计数制,数的符号用。和1表示,小数点则隐含,不占位置。
机器数有无符号数和带符号数之分。无符号数表示正数,没有符号位。带符号数最高位为符号位,正数符号位为0,负数符号位为1。定点表示法分为纯小数和纯整数两种,其中小数点不占存储位,而是按照以下约定:
纯小数:约定小数点的位置在机器数的最高数值位之前。
纯整数:约定小数点的位置在机器数的最低数值位之后。
真值:机器数对应的实际数值。
带符号数有下列编码方式:
原码:
一个数的正常二进制表示,最高位表示符号,数值0的源码有两种形式:+0(00000000)和-0(10000000)。
真值 | 45(0x2D) | -45 |
---|---|---|
原码 | 0010 1101 | 1010 1101 |
反码
正数的反码即原码;负数的反码是在原码的基础上,除符号位外,其他各位按位取反。数值0的反码也有两种形式:+0(00000000),_-0(11111111)。
真值 | 45(0x2D) | -45 |
---|---|---|
反码 | 0010 1101 | 1101 0010 |
补码
正数的补码即原码;负数的补码是在原码的基础上,除符号位外,其他各位按位取反,而后末位+1,若有进位则产生进位。因此数值0的补码只有一种形式+0=-0=00000000.
真值 | 45(0x2D) | -45 |
---|---|---|
补码 | 0010 1101 | 1101 0011 |
移码
用作浮点运算的阶码,无论正数负数,都是将该原码的补码的首位(符号位)取反得到移码。
真值 | 45(0x2D) | -45 |
---|---|---|
移码 | 1010 1101 | 0101 0011 |
符号表示:
原码最高位是代表正负号,且不参与计数;而其他编码最高位虽然也是代表正负号,但参与计数。
机器字长为n时各种码制表示的带符号数的取值范围: