带符号数有下列编码方式:
**原码:**一个数的正常二进制表示,最高位表示符号,数值0的源码有两种形式
+0 0 000 0000
-0 1 000 0000
反码:
正数的反码即原码,负数的反码是在原码的基础上,除符号位外,其它各位按位取反。数值0的反码也有两种形式:
+0 (0 000 0000)
-0 (1 111 1111)
补码: 正数的补码即原码,负数的补码是在原码的基础上,除符号外,其它各位按位取反,后末位+1,若有进位则产生进位。因此数值0的补码只有一种形式:
+0=-0= 0 000 0000
**移码:**作用浮点数运算的阶码,无论正数负数,都是将该原码的补码的首位(符号位)取反得到移码。
机器字长为n 时,各种码值表示的带符号的取值范围,差别在于0的表示,原码和反码分+0,-0,补码只有一个0,因此可以多表示一个:
理解:使用特殊值,如果字长2
00 ,01 ,10 ,11 则只有4个数字
例如: 若机器字长为8, 请给出45和-45 的原码反码和移码。
转换为二进制
+45 = 0001 1101
-45 = 1001 1101
+45 -45
原码:0010 1101 1010 1101
反码:0010 1101 1101 0010
补码:0010 1101 1101 0011
移码:1010 1101 0101 0011