二進位制乘除法運算原理

2021-10-04 16:28:24 字數 1073 閱讀 6740

計算機所能完成的最基本操作是加減法和左右移。

雖然isa中一般都有mul類指令,但是這些經過解碼之後最終的元操作還是加法和移位指令。

假設不能使用乘除運算求a×b的結果,當a=b=123時,最直接的方法是通過88個88相加。但是,我們不難發現這樣的規律:

123 × 123 = (100+20+3)×123 = (100×123) + (20 × 123) + (3 × 123)

因此,我們需要進行計算的次數為min(len(a), len(b))

根據這個原理,不難想出二進位制的乘法運算:

0011 * 1001 = ( 0011 * 1000)+( 0011 * 0001)

注意,這時應該使用位移運算來取代乘法運算:

0011*1000 => 3<<3

0011 * 0001 => 3<<0

//不用乘除做整數乘法運算

intmult

(int a,

int b)

return ans;

}

二進位制除法的原理與在十進位制時差不多,但實現起來要比二進位制乘法稍微複雜一些,先上乙個例子(38除以6等於6餘2):

我們從被除數的最高位開始,每步迴圈結束後被除數必定小於除數,然後通過位移的方式讓被除數長度加1。

no.運算

結果餘數

11/11001

210/110010

3100/110

0100

41000/0110

1011

50111/011011

610/11001

(個位數,迴圈結束)

//二進位制除法運算

intdvi

(int a,

int b)

}return ans;

}

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

電子檔筆記整理,只是筆記,不是教程。2.二進位制除法運算 定點小數 小數點位置固定於最高位之前。定點整數 小數點位置固定於最高位之後。計算公式 計算機計算過程 判斷符號,正負得負 負負得正 正正仍正。判斷乘數數值的最後一位是1還是0 重複第二步,直到右移次數等於乘數的數值位數。設x 0.1101,y...

二進位制運算

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

二進位制運算( )

負數轉化二進位制步驟 將負數取絕對值,得到其絕對值的二進位制 6取絕對值為6,6的二進位制 0110,然後補充0110位32位 000 000 0110 一共32位,即0110前面還有28個0 然後每位取反 111 111 1001 一共32位 接著對上面得到的二進位制 111 111 1001 進...