源碼乘法
㈠ 什麼是原碼一位乘法
原碼一位乘法:
在定點計算機中,兩個原碼表示的數相乘的運算規則是:乘積的符號位由兩數的符號按異或運而乘積的數值部分則是兩個正數相乘之積。設n位被乘數和乘數用定點小數表示:
被乘數 [x]原 = xf .x0 x1 x2 „ xn
乘數 [y]原 = yf .y0 y1 y2 „ yn 則
乘積 [ z ]原 = ( xf⊕yf ) . (0. x0 x1 x2 „xn)(0 . y1 y2 „yn)
式中,xf為被乘數符號,yf為乘數符號。
乘積符號的運演算法則是:同號相乘為正,異號相乘為負。由於被乘數和乘數和符號組合只有(xf yf = 00,01,10,11),因此積的符號可按「異或」(按位加)運算得到。
數值部分的運算方法與普通的十進制小數乘法相類似,不過對於用二進製表達的數來說,其
更為簡單一些:從乘法y的最低位開始,若這一位為「1」,則將被乘數x寫下;若這一位為「下全0。然後再對乘數y的高一位進行的乘法運算,其規則同上,不過這一位乘數的權與最低位不一樣,因此被乘數x要左移一位。依次類推,直到乘數各位乘完為止,最後將它們統統加起來最後乘積z 。
㈡ 急急急!!!大家幫幫忙。用原碼一位乘法進行5*8的四位原碼乘法運算,要求寫出運算過程
8*5可化為 1000*101,可表示為8的二進制數左移2位加不左移的數,既得101000,十進制的40。
將數化為二進制數,被乘數乘2便是左移一位,除二就是右移一位,2在二進制中為 10,和十進制乘除一樣。
被乘數補碼*乘數補碼=兩數積的補碼。單獨算出被乘數的相反數的補碼,同時乘數補碼往右擴一位補0(乘數補碼處理值),積的符號位與其餘位必須一同計算。兩數補碼相乘拆分為多個加法運算。
原碼
00000001+10000001=10000010,換算成十進制為-2。顯然出錯了。
所以原碼的符號位不能直接參與運算,必須和其他位分開,這就增加了硬體的開銷和復雜性
具體定義還分小數和整數:
小數原碼的定義
[X] =
X( 0≤X <1 )
1- X (-1 < X ≤ 0)
例如: X=+0.1011 , [X]原= 0.1011
X=-0.1011 [X]原= 1.1011
㈢ 16進制的原碼乘法,補碼乘法是怎樣的
原碼乘法計算時只計算原碼絕對值部分,結果的符號是根據符號位通過異或來求得.
補碼乘法因符號位參與運算,可以完成補碼數的「直接」乘法,而不需要求補級.這種直接的方法排除了較慢的對2求補操作,因而大大加速了乘法過程.
原碼:一個整數,按照絕對值大小轉換成的二進制數,稱為原碼.
比如是5的原碼.
反碼:將二進制數按位取反,所得的新二進制數稱為原二進制數的反碼.
取反操作指:原為1,得0;原為0,得1.(1變0;0變1)
比如:將每一位取反,得11111111111111
111111111111111010.
稱:是00000000000000000000000000
000101的反碼.
反碼是相互的,所以也可稱:
和
01互為反碼.
補碼:反碼加1稱為補碼.
也就是說,要得到一個數的補碼,先得到反碼,然後將反碼加上1,所得數稱為補
碼.
比如:的反碼是:111111111111111111
11111111111010.
那麼,補碼為:
+1=111111111111111111111111111
11011
所以,-5在計算機中表達為:.轉換為十
六進制:0xFFFFFFFB.
㈣ 原碼乘法是
答案為
A
解釋:在定點計算機中,兩個原碼表示的數相乘的運算規則是:乘積的符號位由兩數的符號位按異或
運算得到,而乘積的數值部分則是兩個正數相乘之積。
㈤ 誰能給我講一下原碼一位乘法
1.手算乘法(鋪墊)
在這里插入圖片描述
但與普通乘法不同的是原碼一位乘法計算過程中出現了進位C、部分積P和乘數寄存器Y。
2.原碼一位乘法
還是上面那個例子。
在這里插入圖片描述
㈥ 定點原碼乘法的部分積怎麼理解
將演算法給你吧:
定點原碼乘法運算的實現過程是:
①
用3個寄存器,1個存放高位部分積,初始為0;1個存放低位部分積,初始為乘數;一個存放被乘數.
即:A
部分積高位,初始為0;
B
被乘數;C
部分積低位,初始為乘數.
②
將被乘數各位作為判斷位,從最低位開始,若判斷位為"1",則將部分積加上被乘數後,右移一位;若判斷位為"0",則將部分積直接右移一位.
③
積的符號位用"同號為正,異號為負"的方法,將被乘數和乘數的符號位異或運算來確定.
【例3.30】已知:X
=
+0.0111,Y
=
-0.1101
求X
×
Y.
解:運算過程為:
X
×
Y=
-0.01011011
㈦ 原碼二位乘法100為什麼是加2x
題主斷章取義了,書上寫:根據「100」加2x*。
這句話是有語境的,這里的100,前面的10是乘數的低位(最右),後面的0是標志位Cj。
什麼是Cj呢?根據原碼兩位乘法的規則就能知道:
當乘數兩位狀態為11時,需要加上3倍被乘數,這在計算機中不好直接實現。所以改成加上(4-1)倍被乘數。但這么規定後,兩位乘數最大值只有11,也就是3。所以增加一個標志位Cj,當Cj為1時,給兩位乘數加上一個「1」。
運算時就可以看成:加上「乘數的兩位+Cj」倍的被乘數。
再回到:根據「100」加2x* 這句話
這里的100實際上就是(10+0),結果還是10,所以加2x*。
而Cj何時為0何時為1,看書上原碼兩位乘的運算規則表就可以了
㈧ 原碼位乘法,二進制原碼兩位乘怎麼個乘法
值部分的運算方法與普通的十進制小數乘法類似,不過對於用二進製表達式的數來說,其乘法規則更為簡單一些。
設x=0.1101,y=0.1011.讓我們先用習慣方法求其乘積,其過程如下:
運算的過程與十進制乘法相似:從乘數y的最低位開始,若這一位為「1」,則將被乘數x寫下;若這一位為「0」,則寫下全0。然後在對乘數y的最高為進行乘法運算,其規則同上,不過這一位乘數的權與最低位乘數的權不一樣,因此被乘數x要左移一位。以此類推,直到乘數個位乘完為止,最後將它們統統加起來,變得到最後乘積z。