| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1512 人关注过本帖
标题:求解大数据的计算
只看楼主 加入收藏
古月风
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-1-16
结帖率:0
收藏
已结贴  问题点数:20 回复次数:17 
求解大数据的计算
怎样进行大整数的加法?比如说1234567890123+987654321210之类的。
2016-01-16 11:53
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:7 
字符串模拟手工运算

DO IT YOURSELF !
2016-01-18 08:58
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:7 
以下是引用wp231957在2016-1-18 08:58:39的发言:

字符串模拟手工运算
1234567890123+987654321210 = 2222222211333,才42bits
2016-01-18 09:08
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 3楼 rjsp
位运算不熟悉  可否给个示例

DO IT YOURSELF !
2016-01-18 09:09
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
以下是引用wp231957在2016-1-18 09:09:57的发言:

位运算不熟悉  可否给个示例
我的意思是这个数据很小,unsigned long long 等内建类型就可以表示了
2016-01-18 09:17
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
my computer max unsigned long long i=4294967295

DO IT YOURSELF !
2016-01-18 09:35
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
到亿级的数据也可以称得上大数据了吧  常规运算足够用了  再大一些  就是研究了

DO IT YOURSELF !
2016-01-18 09:37
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
以下是引用wp231957在2016-1-18 09:35:45的发言:

my computer max unsigned long long i=4294967295
奇怪呀
虽然unsigned long long的范围在C标准中未作规定,但所有的数据模型和编译器都将之固定为64bits
2016-01-18 09:46
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 8楼 rjsp
int main()
{
    unsigned long long i=18446744073709551616;  //error C2177: 常量太大
    printf("%lld\n",i);
    return 0;
}

DO IT YOURSELF !
2016-01-18 09:51
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
int main()
{
    unsigned long long i=18446744073709551616;  // 18446744073709551616溢出了,改为 18446744073709551615 试试
    printf("%lld\n",i); // 改为 printf("%llu\n",i)
    return 0;
}

另外,为了防止你的编译器太旧,不认识“%lld”,VC中可以改为 %I64u 试试
程序代码:
#include <stdio.h>

int main( void )
{
    unsigned long long i = 18446744073709551615;
    printf( "%llu\n", i );
    printf( "%I64u\n", i );
    return 0;
}

2016-01-18 10:17
快速回复:求解大数据的计算
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016913 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved