数的编码方式
带符号数有下面四种编码方式:
(1)原码:一个数的正常二进制表示,最高位表示符号,数值0的原码有两种形式:+0(0 0000000)和 -0(1 0000000)。
(2)反码:正数的反码即原码;负数的反码是在原码的基础上,除符号位外,其他各位按位取反。数值0的反码也有两种形式:+0(0 0000000)和 -0(1 1111111)。
(3)补码:正数的补码即原码;负数的补码是在原码的基础上,除符号位外,其他各位按位取反,而后末位+1,若有进位则产生进位。因此数值0的补码只有一种形式+0=-0=0 0000000。
(4)移码:用作浮点运算的阶码,无论正数负数,都是将该原码的补码的首位(符号位)取反得到移码。
机器字长为n时各种码制表示的带符号数的取值范围
(差别在于0的表示,原码和反码分+0和-0,补码只有一个0,因此可以多表示一个)
总结:
①字长=符号位+各位(例如机器字长为8,则为1+7,这个1即为符号位,7为其他各位,一共有八位数字)。
②原码符号位为0(正数)或1(负数),反码是在原码基础上除符号位外其他各位取反,补码是将反码的末位取反,移码是将补码的符号位取反。