计算 4*4 最快实现方式是什么?


不知道位移是不是最快的,还是有其他更快的方式?

还有 4*4*4*4 呢?

c 编译器

真青驴霸王 10 years, 10 months ago

计算器.......

真人控①号 answered 10 years, 10 months ago

好像是位移。这是面试题吧

馄饨饨鱼头 answered 10 years, 10 months ago

从通用的角度还是位运算比较靠谱 但是针对某一个点优化直接做成常量就完了么

十六夜 咲夜 answered 10 years, 10 months ago


 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;
}

纯洁的腐女 answered 10 years, 10 months ago

計算機得到 4*4 答案最快的方法是預先在代碼中直接寫常數 16(不過一般編譯器會也幫你這麼幹)。

但若是 n*4 最快的方法,位移!除非 n = 0(這時候直接返回 0 纔是最快的)。

不過現代 CPU 計算乘法效率已經跟加法似的了,編譯器優化的水平也不是懂一點技巧就能藐視的了,所以,實際情況,直接寫成 4*4,放心地交給編譯器優化(計算機最懂計算機!)纔是最快的(無論從哪個角度哦)。

月夜.巫女 answered 10 years, 10 months ago

Your Answer