引用url:http://blog.163.com/tianxw_2001/blog/static/140144120070345720265/
原码 补码
在计算机系统中,数值一律用补码来表示主要原因
1、符号位可以与其他为统一处理
2、减法可以按照加法来做。
3、在补码表示的数值想加时,高位有进位将被舍弃。
补码计算:
1、正数的补码与原码相同
2、负数的补码,符号位为1,其余位为该数的绝对值取反加1。
例: -7 负数符号位为 1 , 7 原码 00000111 取反 11111000 加1 11111001
以上理论有个比较基础的理论概念为“模”
“模”是一个计量系统的计数范围。如时钟:
时钟计量范围为 0-11 模= 12
表示n位的计算机计量范围是 0 - 2(n) -1 模式2(n) 注:n表示指数。
“模”其实是计算机产生“溢出”的量,值在计算器上表示不出来。计算机上只能表示出模的余数。任何有模的计算器,均可减法划算为加法。
例如:
当前指向10点钟,而准确时间为6点钟,调整时钟可以有两种做法:
1、倒拨4小时,即 10-4 = 6
2、顺拨8小时,即 10 + 8 = 12 + 6 = 6
在模为12的系统中,加8和减4的效果是一样的。因此凡是减4的运算都可以用加8来代替。
对于计算机也是一样:
以 001 为例 表示 1 ,模为 10进制的8,所以模对应为7, 7= -1 故 -1 即 111。
因为计算机需要表示到负数的范围,定义第一位为1表示为负数,0为正数 ,即有符号二进制数字。
0001 即表示为 整数的1 , 而 1111 表示为 -1。
以 110 为例 表示 6 ,模为 10进制的 8,所以莫对应为 2, 2= -6 故 -6 即 010
在计算机内表示为 正数6 补码为 0110 -6的补码为 1010 ,0110 + 1010 = 10000 抛弃最高位1 即为 0 ,也即将减法换算为加法来做。