計算機得到 4*4 答案最快的方法是預先在代碼中直接寫常數 16(不過一般編譯器會也幫你這麼幹)。 但若是 n*4 最快的方法,位移!除非 n = 0(這時候直接返回 0 纔是最快的)。 不過現代 CPU 計算乘法效率已經跟加法似的了,編譯器優化的水平也不是懂一點技巧就能藐視的了,所以,實際情況,直接寫成 4*4,放心地交給編譯器優化(計算機最懂計算機!)纔是最快的(無論從哪個角度哦)。
long long powll(long long a, long long b) { long long ret = 1; while (b) { if (b & 1) ret *= a; a *= a; b >>= 1; } return ret; }
計算機得到 4*4 答案最快的方法是預先在代碼中直接寫常數 16(不過一般編譯器會也幫你這麼幹)。
但若是 n*4 最快的方法,位移!除非 n = 0(這時候直接返回 0 纔是最快的)。
不過現代 CPU 計算乘法效率已經跟加法似的了,編譯器優化的水平也不是懂一點技巧就能藐視的了,所以,實際情況,直接寫成 4*4,放心地交給編譯器優化(計算機最懂計算機!)纔是最快的(無論從哪個角度哦)。