複習一下:
被除數 ÷ 除數 = 商...餘數
累減
最簡單的就是不斷地用被除數減去除數,直到被除數小於除數,此時減的次數就是商;
加權累減
假設現在要計算a ÷ b
,a
為a
位的二進位制數,b
為b
位的二進位制數:
(1)將b
左移a - b
位,變成乙個a
位的二進位制數b'
(與a
的位數一樣);
(2)如果a
大於等於b'
,則令a = a - b'
,商累加2的b'位數減去b位數的次方
,b'
右移一位;如果a
小於b'
,b'
右移一位;
(3)如果b'
大於等於b
,跳到(2);否則,計算結束,此時a
即為餘數;
另,結果要計算小數的話:
要求幾位小數,給餘數乘以10的幾次
,除以除數,得出的商(高位的0
不要丟)就是小數點後的結果;
位運算實現乘除法
對於任何十進位制正整數 k 設其二進位制為 bn b2b1b0 其中 bi 為二進位制某位值,i 0,n 二進位制數 k b0 2 0 b1 2 1 b2 2 2 bn 2 n 故乘二有 k b0 2 1 b1 2 2 b2 2 3 bn 2 n 1 即左移一 k 00 2 0 b0 2 1 b1 ...
位運算除法 frisbee
include include using namespace std 非遞迴演算法,防止溢位 int integer div function unsigned int dividend,unsigned int divisor if dividend c divisor break res 1 ...
位運算乘除法
1 無符號除法 i.定點除法 對於n位dividend和divisor 1 擴充為2n 1位,但是擴充方向不一致,被除數是 000.nd 而除數是 divisor 000.2 如果dividend divisor,則dividend divisor quotient置 1 然後divisor向右移動...