在分析補碼除法時,需要額外考慮符號位參與計算。在這裡為了表示方便,用[x]表示x的補碼,x*表示x絕對值。
在比較被除數x和除數y的大小關係時,由於參與運算的均為補碼,不能直接用[x]-[y]來比較大小。
例如[5-9] mod 10 = 6,但實際上5比9要小。所以直接考慮絕對值的計算。
x,y同號時,計算x*-y*可以用[x]-[y]表示,結果符號與y符號相同則表示夠減,與y符號不同則不夠減。
比如:計算3/2,3-2=1 ,(-3)-(-2)=(-1)。
x,y異號時,計算x*-y*可以用[x]+[y]表示,結果符號與y符號相異則表示夠減,與y符號相同則不夠減。
比如:計算(-5)/3,(-5)+3=-2,夠減,3/(-5),3+(-5)=(-2),不夠減。
另外分析補碼除法時,末尾恆置1也是有原因的。
因為補碼有乙個規律,補碼的最後乙個數字到往左數第乙個1(包含這個1)與原碼相同,其他與原碼相反。這樣便於確定其他位上商0還是1。
原碼一位乘法和補碼一位乘法
原碼乘法遵循的規則如下 比如 a 0.1101,b 0.1011,求a b的積?詳細計算過程如下圖 符號位與符號進行計算.a的符號位為 1,b的符號位為 1.兩個符號進行異或運算最後的符號仍然是 1.數值位乘以數值位.a 0.1101,b 0.1011.我們採用雙符號位來進行計算.a 00.1101...
補碼一位乘和補碼二位乘
補碼一位乘 回顧原碼的一位乘 原碼一位乘是數值位之間的計算,計算之前需要對被乘數取絕對值,符號位單獨處理 而補碼乘法的符號位是計算過程中產生的,因此不需要對被乘數取絕對值。被乘數和部分積均取2位符號位,因此乘數和被乘數均要在最高位擴位。補碼擴位原則 正數補0,負數補1.乘數取一位附加位,作為乘數的最...
定點原碼 補碼一位乘
移位操作對於任何計算機來說都是不可缺少的操作,各種計算機指令系統中都含有移位指令。這裡首先給大家介紹一下移位操作中的算術移位 原碼右移 補碼右移 算術原碼右移 符號位不變,各位右移,最高有效位補0,末位移出。列如 1.1001 右移 1.0100 0.1101 右移 0.0110 算術補碼右移 符號...