原码,反码,补码
原码
以八位二进制为例
当原码被解释为有符号整数的时候第一个(从左往右)标识位为符号位,且0标识为正数,1标识为负数。
此时整数0有两种表示方式10000000即-0,00000000即+0。
其范围为11111111~01111111即-127~+127
反码
正数的反码即其本身。
负数的反码则是除符号位之外的位全部取反。
补码
正数的补码是自身
负数的补码为除符号位全部取反,随后加1。
杂项
计算机只有相加的运算,原码的计算当正数加负数的时候会加入符号位导致结果错误。
[1]原 + [(-1)]原 = [(-2)]原
反码解决这个问题但是无法解决0有正负两种表示。
补码则解决了这个问题。
当 [00000001]原 + [10000001]原
= [00000001]补 + [11111111]补
= [00000000]补 = [00000000]原 = 0
-1 - 127 = [10000001]原 + [11111111]原
= [11111111]补 + [10000001]补
= [10000000]补 表示-128 计算出来的原码是[10000000]原 也就是原码表示的-0
文章评论