二進制快速運算?加減法運算是計算機中最基本的運算,通常選用補碼實現,實現的算法是:,今天小編就來說說關于二進制快速運算?下面更多詳細答案一起來看看吧!
加減法運算是計算機中最基本的運算,通常選用補碼實現,實現的算法是:
[X Y]補= [X]補 [Y]補 MOD 2 (2.6)
[X-Y]補= [X]補 [-Y]補 MOD 2 (2.7)
例如, X = 0.1010, Y = -0.0101,則:
[X]補= 01010, [Y]補= 11011,[-Y]補= 00101 [X]補 [Y]補 MOD 2= 01010 11011 = 100101 ,按2取模後的結果為00101,其真值為 0.0101,符号位與數值位均正确。
[X]補 [-Y]補 MOD 2= 01010 00101 = 01111 ,按2取模後的結果為01111,其真值為 0.1111,符号位與數值位均正确。
在執行補碼加減運算時,僅在其運算結果不超出機器能表示的數值範圍時,運算結果才是正确的,否則就是“溢出”,得到的結果是錯誤的。執行補碼加減法運算一定要檢查溢出,檢查是否溢出有3種思路。
(1)檢查參與運算的數據和結果的符号是否正确。正數加正數結果為負、或者負數加負數結果為正,都是溢出。
(2)為了方便判别溢出,某些機器采用模4補碼(即使用雙符号位),其定義為:
例如,X= 0.1011,[X]補=001011, X=-0.1011,[X]補=110101,每個補碼都使用兩個符号位,而且兩個符号位總是同值。在執行加減法運算時,若結果的兩個符号位相同,為00或11表示結果正确;當符号位為01或10時,表示數值溢出。
(3)數值位産生向符号位的進位,而符号位不産生向更高位的進位,或數值位不産生向符号位的進位,而符号位卻産生向更高位的進位也是溢出。這很容易用數值位的進位輸出與符号位的進位輸出的“異或”操作來判斷。
源碼一位乘法的運算算法原碼一位乘法是将符号位與數值位分開進行運算,乘積的符号是兩個數符号的異或值,數值是兩個數絕對值(即原碼表示的數值位)的乘積。
例: X=0.1101, Y=0.1011,計算 X × Y
手工計算時,是根據乘數的每一位求部分積,各部分積依次左移一位,最後一次總加求和的辦法得到乘積結果,再用負乘負、正乘正為正,負乘正、正乘負為負的方案來處理符号。到了計算
(1)将部分積的一次總加改為分步累加; (2)将部分積左移改為部分積右移; (3)使部分積連同乘數一起右移,以便保存雙倍位數的乘積。 原碼一位乘法的算法是:
(1)用乘數寄存器的最低位選擇求部分積的數據來源:被乘數或0值;相加求得部分積并使其右移一位,乘數也同時右移一位,此時高位部分積的最低位移入乘數寄存器的高位。 (2)用一個特定的寄存器控制相乘次數(決定于數據位的位數)。 (3)用乘數與被乘數符号位的異或值作為乘積的符号。
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!