移位乘除法

2021-09-30 12:33:29 字數 520 閱讀 5574

移位實現的乘除法比直接乘除的效率高很多。

用移位實現乘除法運算

a=a*4;

b=b/4;

可以改為:

a=a<<2;

b=b>>2;

說明:

除2 = 右移1位 乘2 = 左移1位

除4 = 右移2位 乘4 = 左移2位

除8 = 右移3位 乘8 = 左移3位

... ...

通常如果需要乘以或除以2的n次方,都可以用移位的方法代替。

大部分的c編譯器,用移位的方法得到**比呼叫乘除法子程式生成的**效率高。

實際上,只要是乘以或除以乙個整數,均可以用移位的方法得到結果,如:

a=a*9

分析a*9可以拆分成a*(8+1)即a*8+a*1, 因此可以改為: a=(a<<3)+a

a=a*7

分析a*7可以拆分成a*(8-1)即a*8-a*1, 因此可以改為: a=(a<<3)-a

關於除法讀者可以類推, 此略.

移位實現的乘除法

移位實現的乘除法比直接乘除的效率高很多。用移位實現乘除法運算 a a 4 b b 4 可以改為 a a 2 b b 2 說明 除2 右移1位 乘2 左移1位 除4 右移2位 乘4 左移2位 除8 右移3位 乘8 左移3位 通常如果需要乘以或除以2的n次方,都可以用移位的方法代替。大部分的c編譯器,用...

C C 中移位實現乘除法運算

用移位實現乘除法運算 a a 4 b b 4 可以改為 a a 2 b b 2 說明 除2 右移1位 乘2 左移1位 除4 右移2位 乘4 左移2位 除8 右移3位 乘8 左移3位 通常如果需要乘以或除以2的n次方,都可以用移位的方法代替。大部分的c編譯器,用移位的方法得到 比呼叫乘除法子程式生成的...

乘除法指令

一 乘法指令 1 無符號乘法指令 mul 格式 mul src 功能 位元組乘法 隱含運算元為al ax al src 字乘法 隱含運算元為ax dx ax ax src 雙字乘法 以後再說 對標誌位的影響 如果高位為0,則of 0 cf 0 如果高位不為0,則of 1 cf 1 注 src 不能為...