📄 muti64.c
字号:
/************************************************************************************
*description: 用c语言实现2个32位大数相乘,乘积是64位
*author: bolin.gong
**********************************************************************************/
#include <stdio.h>
/* this multiplies two 32-bit integers op1 and op2. The product is stored in
*prod_hi (higher 32 bits), and in *prod_lo (lower 32 bits). */
void mult(long op1, long op2, long *prod_hi, long *prod_lo)
{
long op1_hi = (op1 >> 16) & 0xffff;
long op1_lo = op1 & 0xffff;
long op2_hi = (op2 >> 16) & 0xffff;
long op2_lo = op2 & 0xffff;
long cross_prod = op1_lo * op2_hi + op1_hi * op2_lo;
*prod_hi = op1_hi * op2_hi + ((cross_prod >> 16) & 0xffff);
*prod_lo = op1_lo * op2_lo + ((cross_prod << 16) & 0xffff0000);
}
int main()
{
long x = 123456789;
long y = 987654321;
long prod_hi, prod_lo;
mult(x, y, &prod_hi, &prod_lo);
// This will output:
// 123456789 * 987654321 = (28389652 << 32) | 4227814277)
printf("%ld * %ld = (%ld << 32) | %ld", x, y, prod_hi, prod_lo);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -