两个数相乘(位移)

乘法的一些概念

一个数乘以进制数,只要在尾部加0

//16进制
0xff * 16 = 0xff0

//10进制
12 * 10 = 120

//2进制
0111 * 2 = 01110


二进制乘法

#3 * 5
        0011
        0101
        ----
        0011
       0000
      0011
     0000
--------------------------
     0001111
--------------------------
15

下面是linux c简单的实现

#include <stdio.h>
  
int b_mul(int a, int b, int max_len) 
{
    int i;
    int res = 0;

    for (i = 0; i < max_len; i++) {
        if (b & 1<<i) {
            res += a << i;
        }
    }
    return res;
}
  
int main() 
{
    int res1 = b_mul(3,5,10);
    int res2 = b_mul(3,6,10);
    printf("%d %d\n", res1, res2);
    return 0;
}

理解这些概念,能帮助以后理解一些大整数的运算


上一篇: 两个数相加相减(位移)
下一篇: 两个数相除(位移)
作者邮箱: 203328517@qq.com