
1.为什么需要补码原码表示有符号数相加时比如14-14 《》 00001110 10001110 10011100 结果并不等于0所以必须把其中与负数相加转换成与整数相减而减法器的成本比较贵这时候就可以考虑用加法代替减法了所以出现了补码。2.怎样用加法代替减法一个时钟从10点到7点可以逆时针转3个小时相当于10 - 3 7也可以顺时针转9个小时相当于10 9 19。因为都是 mod 12(相当于除以12求余数所以这里在 mod 12 的条件下 -3 等价于 9 ( -3 mod 12 9, 9 mod 12 9)。所以可以通过模运算的性质用加法代替减法。3.模运算的性质数论中余数的定义x qm r (x,m是整数m 0)其中r是余数 也就是 x mod m r(x / m q ...... r)-3 /12 -1 ...... 99 / 12 0 .......921 / 12 1 ......933 /12 2 ......9-15 /12 -2 ......9所以10 (-3) , 10 9, 10 21 在 mod 12 的条件下效果相同。因为-3和9的绝对值相加之和等于模所以-3 和 9 互为补数在 (mod m) 的条件下若能找到负数的补数就可以用正数的加法代替减法也就是 模 - a的绝对值 a的补数4.补码的作用假设计算机的机器字长是8bit 00000000 ~ 11111111 -- 0 ~ 2的8次方 - 1所以计算机天然的完成了mod 2的8次方 也就是只保留最低8位。确定-14的补数 100000000(2的8次方 - 00001110(-14的绝对值) 11110010 就是-14的补码所以 00001110(14) 11110010(-14) 0