左移右移位運算 計組隨筆 二進位制乘除法運算

2021-10-14 16:19:25 字數 1904 閱讀 9735

電子檔筆記整理,只是筆記,不是教程。

2. 二進位制除法運算

定點小數:小數點位置固定於最高位之前。定點整數:小數點位置固定於最高位之後。

計算公式:

計算機計算過程:

判斷符號,正負得負、負負得正、正正仍正。

判斷乘數數值的最後一位是1還是0

重複第二步,直到右移次數等於乘數的數值位數。

設x = 0.1101, y=0.1011,求x·y

判斷符號位

計算過程

布斯演算法不需要判斷符號位。

❞計算機計算過程:

初始值給乘數最低位之後補0,且乘數用單符號位表示

根據運算規則,執行操作。

右移一位

重複2、3步驟,當移位次數等於乘數數值位數時,再進行最後一次步驟2

設x = -0.1101, y=0.1011, 求[x·y]的補碼

2.1.1 恢復餘數法 人工計算步驟:

原碼乘除法操作時符號位單獨運算。

判斷被除數和餘數的大小,若除數小,商上0,餘數補0;若除數大,則商上1,餘數補0,重複上述步驟直到結果滿足要求。

上述運算結果連線即最終結果

機器運算很少會實現,一般是商和餘數左移操作以及減法操作組合。

2.1.2 恢復餘數法演算過程

計算0.1011/0.1101

2.1.3 加減交替法

加減交替法也是恢復餘數法的一種修正,這種方法也需要引入補碼。

加減交替法一般步驟是讓符號位參與運算,而不需要被除數和除數的大小而進行多餘的操作。可以直接除數可以直接與被除數補碼相減,所得餘數為負數時,可以直接讓餘數邏輯所以並加上被除數,從而直接得到下一步的餘數,而不需要恢復餘數。

2.2.1 浮點數的加減運算

一般步驟:

對階步驟。階碼值小的數的尾數和階碼同時分別進行右移和自增(+1)操作,直到兩個數的階碼相等。

尾數加減運算。尾數直接作為定點數進行加減運算。

規格化操作。整個運算結果進行規格化處理,使尾數盡可能以最大值的形式出現。

2.2.2 規格化操作規則

向右規格化。當尾數運算結果符號位不同時,即溢位,則將尾數右移一位,階碼自增一位。

向左規格化。當尾數運算結果符號位相同時,而尾數的最高位數值位與符號位相同,則進行左移操作,直到最高位數值位與符號位的值不同為止。

捨入操作。進行上述步驟1前,對數值位的最低位進行0舍1入操作。即當移掉的最高位為1時,在尾數的末位加1。此步驟可能會和向右規格化重複操作。

2.2.3 浮點數的乘除法運算

運算步驟:

階碼加減運算。為溢位判斷,階碼採用雙符號位參與兩個浮點數的階碼加減運算。

尾數乘除運算。參照定點小數的乘除法運算對兩個浮點數的尾數進行乘除運算,

判斷溢位:浮點數的溢位一般由浮點數的階碼確定,處理和上述規格化操作一致。

二進位制的左右移位運算

移位運算子 最重要的一點,雖然數字存貯在計算機記憶體中是以2進製的補碼形式,但是運用移位運算子時是對原始碼進行的。移位運算子 高位捨棄,低位補0 負數與正數的運算是一樣的 例 int a 10,g.g a 4 160 a 11010 2 110100000 160 10 移位運算子 符號位隨著運算數...

python二進位制移位 python移位運算的實現

密碼演算法程式設計實踐選的sha 1。在寫的過程中遇到一丟丟關於python移位的問題,記錄一下。sha 1其中第一步需要填充訊息。簡單闡述一下sha1填充訊息的過程 如輸入訊息 123 先轉成ascii碼 313233,訊息長度為3 8 24。即00110001 00110010 00110011...

二進位制運算

運算子 符號含義例子與 兩邊都為真時為真 1 1 1或 任何一邊為真時為真1 非取反 如果1則為0 如果0為1 1 0 異或 兩邊相同為1 兩邊不同為0 1 1返回false 1 2返回true 運算子符號含義 例子邏輯與 判斷兩邊 都為真時為真 true true true或 判斷兩邊 任何一邊為...