快速乘法

作者:

在

快速乘法是采取类似于快速幂的方式计算乘法主要用于计算$$a*b % c$$ (当a*b超过long long的范围时)。

假设$$a=3_{10}=(0011)_2$$

$$b=5_{10}=(0101)_2$$

那么$$a*b=0011 \times 0101=0011 \times 1 + 0110 \times 0 + 1100 \times 1$$

代码:

 

int_t quickMultiply(int_t a, int_t b) {
    int_t result = 0;
    while (b) {
        if (b & 1) result = result + a;
        a = a << 1;
        b >>= 1;
    }
    return result;
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理。