環,模,補碼,負數的表示與減法實現
阿新 • • 發佈:2020-10-15
- 假設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’,可以看成按位取反,稱為反碼
- 採用補碼運算僅需要加法器和反相器