C++语言编写代码实现32位无符号整数与32位无符号整数相乘,结果为64位无符号整数。
效果
注意乘法累加的移位和加法不同
#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>
using namespace std;
int a[32] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int b[32] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
int ret[64];
int main(){
int c = 0;
int len = 0;
for (int i = 0; i < 32; i++){
len = i;
for (int j = 0; j < 32; j++){
c = a[i] * b[j] + c + ret[len];
ret[len++] = (c % 10);
c = c / 10;
}
while (c){
c += ret[len];
ret[len++] = (c % 10);
c /= 10;
}
}
for (int i = 0; i < 32; i++)
printf("%d", a[i]);
printf("\n");
for (int i = 0; i < 32; i++)
printf("%d", b[i]);
printf("\n");
for (int i = 0; i < 64; i++)
printf("%d", ret[i]);
printf("\n");
return 0;
}