环,模,补码,负数的表示与减法实现
- 假设M是n-bit数的模,比如16是4bit二进制数的模,8是3bit二进制数的模,即从000->111,111+1=1000,超过3bit的那个1被舍弃回到000,0到7首位相连就形成一个环, 模的概念与一个环类似,M+B=-M+B=B,相当于一个时钟(模12)来回拨
- -1模8是7,-2模8是6,13模8是5,0模8是0,模可以认为是数的规模,一条数字可以这样无限延伸下去
- 数轴正半轴是0开头,负半轴是1开头
- 1000定义为-8,这样可以保证正数个数和负数个数相等同时满足负数从1开头的规律
- M-B又称为B的补(Complement of B)
[B]
,M-B=-B,故可以用M-B代替-B
- 2^n-D定义数字D的补码这种方式计算需要借位,为消除借位定义r-1的补码
- D的r-1下的补码=(r^n-1)-D=(M-1)-D
- X=r-1,r^n-1=XX…X
- 2^4-1=1111,有个简便方法直接1小数点向右移4位为10000,X为二进制下最大数的符号(Symbol)
- (r^n-1)-D来计算补码,相当于XX…X-D,每一位都是最大位,不需要借位
- 推出重要规律
r 的 补 码 = r n − D = ( r n − 1 ) − D + 1 = ( r − 1 ) 的 补 码 + 1 r的补码=r^n-D=(r^n-1)-D+1=(r-1)的补码+1 r的补码=rn−D=(rn−1)−D+1=(r−1)的补码+1 - 1-1=0,1-0=1,1-D=D’,可以看成按位取反,称为反码
- 采用补码运算仅需要加法器和反相器