❝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或 判斷兩邊 任何一邊為...