免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: thelordsaves
打印 上一主题 下一主题

[C] 整数乘法问题,求助!! [复制链接]

论坛徽章:
8
2015年迎新春徽章
日期:2015-03-04 09:58:112015元宵节徽章
日期:2015-03-06 15:51:33数据库技术版块每日发帖之星
日期:2016-06-09 06:20:00数据库技术版块每日发帖之星
日期:2016-06-10 06:20:00数据库技术版块每日发帖之星
日期:2016-07-20 06:20:0015-16赛季CBA联赛之同曦
日期:2016-07-21 21:26:51数据库技术版块每日发帖之星
日期:2016-07-23 06:20:00数据库技术版块每日发帖之星
日期:2016-07-26 06:20:00
11 [报告]
发表于 2013-01-11 19:17 |只看该作者
谢谢!   

论坛徽章:
0
12 [报告]
发表于 2013-01-11 20:58 |只看该作者
#define num ((long long)100000000 * (long long)100000000) //这个是亿比千万要大~~~

printf("%lld\n",num);

首先得达到目的,再说别的,扯那些没用的干啥~~

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
13 [报告]
发表于 2013-01-12 13:33 |只看该作者
回复 1# thelordsaves


    这种应该有大数计算库, 网上应该有的。

    如果直接用C语言  本身  计算, 64 bit的计算机, 最大只能表示 64bit的 int数,

   一定会受到限制的。

    用大数计算库, 把大数用软件的数据结构来表示,想计算多大,就多大

论坛徽章:
0
14 [报告]
发表于 2013-01-12 14:53 |只看该作者
好的,多谢!回复 13# goldenfort


   

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
15 [报告]
发表于 2013-01-12 15:24 |只看该作者
可以加ULL后缀。

输出请用%lld

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
16 [报告]
发表于 2013-01-12 15:52 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
17 [报告]
发表于 2013-01-12 16:01 |只看该作者
大数运算库,如果要速度并且专业计算,推荐GMP(GNU的少数还值得称道的作品),如果要适应性广但对速度没啥要求,可以M-APM,如果想找个代码简单点儿的学习或者研究,可以看看libtommath,风格还不错。

反正都比自己写好多了……不过如果你只是想要64bit计算的话,用32bit算也挺快的吧……

a*b
= (a1*2^16+a2)*(b1*2^16+b2)
= a1*b1*2^32 + a1*b2*2^16 + a2*b1*2^16 + a2*b2

所以通过这个式子直接算lo和hi也挺方便的吧……

论坛徽章:
0
18 [报告]
发表于 2013-01-12 16:14 |只看该作者
牛人正解,你总是能更进一步,哈哈回复 16# pmerofc


   

论坛徽章:
0
19 [报告]
发表于 2013-01-12 16:16 |只看该作者
非常全,真是太感谢了!回复 17# starwing83


   

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
20 [报告]
发表于 2013-01-12 17:20 |只看该作者
hellioncu 发表于 2013-01-11 17:07
针对你这个情况
10000000000000 = 0x9184E72A000
截断后0x4E72A000=1316134912


10000000000000除以16得除多久啊……您真有耐心
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP