用位運算實現除法

2021-10-23 06:27:12 字數 697 閱讀 4749

複習一下:

被除數 ÷ 除數 = 商...餘數
累減

最簡單的就是不斷地用被除數減去除數,直到被除數小於除數,此時減的次數就是商;

加權累減

假設現在要計算a ÷ baa位的二進位制數,bb位的二進位制數:

(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向右移動...