【发布时间】:2013-06-28 21:55:47
【问题描述】:
在 C 中,你可以执行一个简单的:
int a = b + c;
现在,如果a 大于 2^32(或者可能是 2^31+1),您可以将代码更改为:
long a = b + c;
或
unsigned long a = b + c;
但是你将如何实现加法:
bigint a = b + c;
其中 bigint 是某种类/typedef/结构,用于存储和计算大整数(数百位数长的数字)。如果您只是尝试使用小学时的标准手写十进制方法将数字相加,您可以在等式中计算无限长的数字。但是回到计算机科学,如何使用二进制、高效的方法来进行无限长的计算(只要有足够的 RAM 可用)
更重要的是,有没有一种方法不是很慢?
【问题讨论】:
-
你使用像GMP这样的库。
-
"你如何计算无限位数的数字?" - 几乎没有。
-
google "任意精度 c++",你会找到this question
-
就像@H2CO3 所说,在有限的宇宙中存在限制。
标签: c++ c biginteger