⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 muti64.c

📁 这是一个用c语言实现的2个32大数相乘
💻 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 + -