|
|
1
12
大多数语言都有这样做的函数或库,通常称为bignum库。( GMP 是好的。 如果你想自己做,我会像人们在纸上做长乘法那样做。要做到这一点,您可以使用包含数字的字符串,也可以使用二进制位操作。 例子:
或二进制的:
编辑: 在使用二进制代码之后,我意识到使用位操作而不是包含以10为基数的字符串来编码要简单得多(当然也要快得多)。我已经编辑了我的二进制乘法示例来显示一个模式:对于底部数字中的每个1位,添加顶部数字,位左移。 1位的位置 乘以一个变量。最后,该变量将包含产品。 要存储产品,您必须有两个64位数字,并设想其中一个是产品的前64位,另一个是产品的第二个64位。您必须编写代码,将第二个数字的第63位的加法运算到第一个数字的第0位。 |
|
|
2
4
如果您不能使用现有的bignum库(如gmp),请签出 Wikipedia's article on binary multiplication with computers . 有许多好的,有效的算法。 |
|
|
3
3
最简单的方法是使用教科书机制,将任意大小的数字分成32位的块。
给定一个b c d*e f g h(每个块32位,总共128位)
您将首先执行:h*d+out[8]=>64位结果。
然后用g,f,e重复。
最后,遍历并将大整数转换为数字(这需要一个“将大数字除以一个单词”的例程) |
|
|
4
1
是的,您使用的数据类型实际上是一个数字字符串(就像普通的“字符串”是一个字符串一样)。你如何做到这一点是高度依赖语言的。例如,Java使用BigDeCimple。你用什么语言? |
|
|
5
1
这通常作为家庭作业来做。你在小学学到的算法会奏效的。如果您需要一个真正的应用程序,请使用一个库(其他文章中提到了几个库)。 |
|
6
0
这是我用C编写的代码。好的旧乘法方法
|
|
|
7
0
|
|
|
Muhammad Umer · 为什么这个随机数猜谜游戏模拟产生5.8 1 年前 |
|
|
Alisa Petrova · 在有向图中更改一对顶点以创建循环 1 年前 |
|
|
D W · Python-将浮点数从2转换为10到100位小数 1 年前 |
|
|
Bartol · 确定python龟图形中的角度 2 年前 |
|
|
randomAlgo · 将弹簧设置为相同长度的成本最低 2 年前 |
|
Fyodor · 在C中使用sin和cos计算数学表达式不正确? 2 年前 |
|
Sergio · python中大量数字的乘法 2 年前 |