1、理解原码、反码、补码与移码
给定一个数,其真值为x,机器字长为n,则针对带符号数:
2、原码、反码、补码与移码取值范围
针对机器字长为n的带符号数x,原码与反码取值范围一样,以下整数均为纯整数,小数均为纯小数:
直接看公式可能不容易记住,所以最好是记实例。针对机器字长为8位(即n=8)的带符号纯整数x,其纯整数取值范围是-127 ~ 127,即127= 128-1=27-1=2(8-1) - 1=2(n-1) - 1。纯小数的取值范围是-1 ~ 1,因为原码与反码有2个0(即-0、+0)所以正负小数都可以等于0
补码的取值范围:
同样记实例。针对机器字长为8位(即n=8)的带符号纯整数x,其取值范围是-128~127,即-128 = -27 -(28-1) = -(2n-1),127= 128-1=27-1=2(8-1) - 1=2(n-1) - 1。纯小数的取值范围是-1 ~ 1,但补码只有1个0(即+0),所以负小数小于0,可以等于-1。
移码的取值范围:
移码公式不分正负数。
3、原码、反码、补码与移码公式
针对正数(正整数与正小数),原码、反码与补码的表示是一样的。
针对机器字长为n的负数(负整数与负小数):
记忆方法:(机器字长n=8)
1、对于原码负数,符号位取1,即1000 0000。若1000 0000为整数,其值为27=2n-1,若为小数,其值为20,最后加上|x|即可。
2、对于反码负数,符合位取1,数值位取反,即1111 1111,若1111 1111为整数,其值为255=2n-1,若为小数,其值为21-2-7=2-2-(n-1),最后加上x即可。
3、对于补码负数,符合位取1,数值位取反,再加1,即1 0000 0000,若1 0000 0000为整数,其值为256=2n,若为小数,其值为2,最后加上x即可。
4、对于移码,其公式与原码负整数和负小数公式相似,但移码取x,原码取|x|。