原碼乘法:
原碼的手動乘法:就和小學學過的豎式乘法寫法一致,從右到左,乘數每一位分別與被乘數相乘。
x 1101
原碼的一位乘法:
具體計算:
符號位最後單獨處理,絕對值參加乘法運算。該演算法因為每次根據乘出的一位來計算位積,所以稱為原碼一位乘法。
步驟:初始部分積為0,yi為1;若yi為0,部分積加|x|,累加結果右移一位,得到新部分積;(i依次為n n-1 n-2....)
符號位異或運算。
(為什麼要右移:對於乘數,最後一位已經用過了,沒有價值,所以直接右移丟棄掉,剩下的空間剛好用來儲存部分積右移的部分。換句話說,部分積可以視為在乘數左側,每次右移擠占乘數空間)
例題:以+1011 * -1101為例做一位乘法
初始的部分積為0,0000,0表示正數,不參與計算。部分積實際為0000. 資料顯示:0000 1101
1)用乘數1101的最後一位1乘1011 並加上之前的部分積0000,結果為1011,
部分積右移一位,擠占乘數1101的位置,乘數變成了1110,部分積變成0101 資料顯示: 0101 1110
2)用乘數1110的最後一位0乘1011,並加上部分積,結果為0101 資料顯示: 0101 1110
部分積右移,擠占乘數,乘數變成1111,部分積變成0010 資料顯示: 0010 1111
3)用乘數1111的新最後一位1乘1011,並加上部分積,結果為1101 資料顯示: 1101 1111
部分積右移,擠占乘數,乘數變成1111,部分積變成0110 資料顯示: 0110 1111
4)用乘數1111的新最後一位1乘1011,並加上部分積,結果為0001 資料顯示: 0110 1111
部分積右移,擠占乘數,乘數變成1111,部分積為1000 資料顯示:1000 1111
與乘數1111拼接
最終結果為1,1000 1111 前面的1表示負數
補碼一位乘法
在計算機中用補碼運算較為方便。補碼乘法運算時,可以將補碼的數值部分同原碼一樣直接做乘法,在根據乘數符號位做修正即可。
在修正x*y時,y的符號位為0不用修正,y的符號位為1 時減去x
此外,補碼的符號位可以直接參加運算,不用單獨處理;並且他們需要兩位符號位
舉例:x為+0.1011 y為-0.1101
轉化為補碼後,x為00.1011 y為11.0011
計算大致同上述步驟。由於y的符號位為11,因此計算結果00.0010 0001要減去x補碼,也就是加上-x補碼
實際結果為1.0111 0001
轉化為原碼是-0.1000 1111
轉換為原碼的話為-0.1000 1111
浮點數 定點數
浮點數是表示小數的一種方法.所謂浮點就是小數點的位置不固定,與此相反有定點數,即小數點的位置固定.整數可以看做是一種特殊的定點數,即小數點在末尾.8086 8088中沒有浮點數處理指令,不過從486起,cpu內建了浮點數處理器,可以執行浮點運算.一般的浮點數有點象科學計數法,包括符號位 指數部分和尾...
定點數和浮點數 定點數和浮點數計算
這個東西其實不是很難,但是確實足夠繞的,因為從十進位制的加減乘除轉換到二進位制的加減乘除就已經很麻煩了,然後為了選拔人才,不給你二進位制,直接給你十六進製制,當然最麻煩的還是補碼和移碼,確實足夠 但是給予足夠的練習還是可以比較熟練的,公式稍後會整理到置頂的公式大全中。可以看完了以後去嘗試一下相關計算...
定點數的表示
計算機中常用的資料表示格式有兩種,一是定點格式,二是浮點格式。所謂定點數和浮點數,是指在計算機中乙個數的小數點的位置是固定的還是浮動的 如果乙個數中小數點的位置是固定的,則為定點數 如果乙個數中小數點的位置是浮動的,則為浮點數。一般來說,定點格式可表示的數值的範圍有限,但要求的處理硬體比較簡單。而浮...