首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用GCC实现双符号64位乘法

用GCC实现双符号64位乘法
EN

Stack Overflow用户
提问于 2012-05-24 14:33:42
回答 3查看 1.2K关注 0票数 0

我试图用GCC将两个有符号的64位长数据相乘。

代码语言:javascript
运行
复制
long long int A;//(A0,A1)
long long int B;//(B0,B1)

你能帮我做以下几件事吗

如何使用printf

  • multiply
  1. 输入64位数字
EN

回答 3

Stack Overflow用户

发布于 2012-05-24 14:36:15

  1. scanf("%lld", &A);
  2. printf("%lld", A);
  3. A*B
票数 3
EN

Stack Overflow用户

发布于 2012-05-24 14:50:20

你不能确定long long int是64位.你应该试着做:

代码语言:javascript
运行
复制
#include <stdint.h>

int64_t A, B;
票数 1
EN

Stack Overflow用户

发布于 2013-07-17 09:48:52

尝试这个,我也在检查,并将评论我的结果。

代码语言:javascript
运行
复制
void mulul64(uint64 u, uint64 v, uint64 *whi, uint64 *wlo)
{
uint64 u0, u1, v0, v1, k, t;
uint64 w0, w1, w2;
u1 = u >> 32; u0 = u & 0xFFFFFFFF;
v1 = v >> 32; v0 = v & 0xFFFFFFFF;
t = u0*v0;
w0 = t & 0xFFFFFFFF;
k = t >> 32;
t = u1*v0 + k;
w1 = t & 0xFFFFFFFF;
w2 = t >> 32;
t = u0*v1 + w1;
k = t >> 32;
*wlo = (t << 32) + w0;
*whi = u1*v1 + w2 + k;
return;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10739618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档