可以用原码,反码,补码三种方式来表示定点整数和定点小数。还可以用移码来表示定点整数。
若真值为x,则[x]原,[x]反,[x]补,[x]移分别表示真值所对应的原码,反码,补码,移码
反码:
若符号位为0,则原码与反码相同 若符号位为1,则数值位全部取反 若机器字长为n + 1位,反码整数的表示范围: -(2^n - 1) <= x <= 2^n - 1(关于原点对称) 真值0有 +0 和 -0两种形式 [+0]原 = 00000000 [-0]原 = 10000000 [+0]反 = 00000000 [-0]反 = 11111111 若机器字长为 n + 1位,反码小数的表示范围: -(1 - 2^ -n) <= x <= 1 - 2^-n (关于原点对称) 真值0有+0 和 -0两种形式
补码:
正数的补码 = 原码 负数的补码 = 反码末位 + 1(考虑进位) [+0]原 = 00000000 [-0]原 = 10000000 [+0]反 = 00000000 [-0]反 = 11111111 [-0]的反码+1后会产生进位,所以[+0]补 = [-0]补 = 00000000 因为补码的真值0只有一种表示状态,原码有两种状态可以表示0 那么多出来的一种表示什么呢? 定点整数补码[x]补 = 1,0000000 表示x = -2^7 若机器字长为n + 1位,补码整数的表示范围: -2^n <= x <= 2^n - 1 (比原码多表示一个-2^n) 定点小数补码[x]补 = 1,0000000表示x = -1 若机器字长为n + 1位,补码整数的表示范围: -1 <= x <= 1- 2^-n (比原码多表示一个-1)