《使用移位運算來避免乘法運 C 第八周》

2021-06-10 11:31:23 字數 937 閱讀 4164

* 對任務及求解方法的描述部分

* 問題描述:

移位運算的特點是速度快,使用移位運算來避免乘法運算是一種常用技巧。不過乘數必須都是正整數,而且必須至少有乙個是 2 的 n 次方。例如:

num *= 32;

等同於num <<= 5; /* 2 的 5 次方等於 32 */

如果乘數不是 2 的 n 次方,則可以把乘數分解成幾個 2 的 n 次方的和:

num *= 20;

等同於num *= (16 + 4);

請設計乙個用移位和加法運算取代整數相乘的方法。 

* 程式頭部的注釋結束

巧用移位運算避免乘法運算

使用移位運算來避免乘法運算是一種常用技巧,不過乘數必須都是正整數,而且必須至少有 乙個是 2 的 n 次方,例如 2,4,8,16,32 移位運算的特點是速度快,而乘法運算速度較慢,把乘法運算轉化為移位運算可以稍微提高程式執行效率。例如 num 32 等同於num 5 2 的 5 次方等於 32 如...

使用移位和加法運算替代乘法運算

因為工作中遇到頻繁操作乘法運算導致用時過多的情況,特找了下替代方案,但實測效果並不理想,暫做記錄。include include include include define max nm a,b a b?a b define min nm a,b a b?a b define repeat num...

HashMap 優化 使用 運算 來實現取模

1.前提條件 值必須是2的冪次方,看j a1.8 hashmap原始碼 2.找到 if p tab i n 1 hash null n必須是2的倍數 首先是hash這個值,轉成二進位制,就是0和1,我們先用個例子來說明下,n 4,hash 13 13的二進位制是1101 4的二進位制是 0100 高...