golang的math/big软件包支持的最大价值是什么?

golang的math/big软件包支持的最大价值是什么?,go,biginteger,Go,Biginteger,我正在阅读数学/大软件包的文档: 我试图理解一个数字有多大对于数学来说太大了。大,这看起来像是一个常数,我可以询问 我在我的机器上看到: fmt.Println(math.MaxUint32) 4294967295 为了计算的目的,这与我的机器上可能的最大整数有什么关系?这个数字的单位是多少?这是字节、小数位还是数字本身以外的其他内容?库通常将大数字存储为数字序列,例如264。它们的限制与可用内存有关。因此,可以表示的最大数字与虚拟地址空间的限制有关。您可以放心地假设一个甚至大到101000

我正在阅读数学/大软件包的文档:

我试图理解一个数字有多大对于数学来说太大了。大,这看起来像是一个常数,我可以询问

我在我的机器上看到:

fmt.Println(math.MaxUint32)

4294967295
为了计算的目的,这与我的机器上可能的最大整数有什么关系?这个数字的单位是多少?这是字节、小数位还是数字本身以外的其他内容?

库通常将大数字存储为数字序列,例如264。它们的限制与可用内存有关。因此,可以表示的最大数字与虚拟地址空间的限制有关。您可以放心地假设一个甚至大到1010000的数字可以用bignum表示。当然,a不能表示为bignum,因为它的位数大于宇宙中粒子的数量

另一个限制是算术运算的复杂性。但是存在非常有效的bignum算法

FWIW是一个为bignums设计的C库,只要有内存,它就可以处理数字。然而,有传言称,当malloc失败时,GMPlib正在流产

我不知道当一个数字太大而无法表示时,Go bignums内部会发生什么情况,并且限制在不同的机器之间变化,并且在不同的运行中可能会有所不同。例如,Go给出了一个乘积,其大小是参数大小之和,内存不足错误是未记录的,但显然可能发生

使用bignum时,更喜欢迭代算法而不是递归算法。例如,一个简单的递归阶乘可能会使调用堆栈溢出足够大的bignum,因此您需要对其进行迭代编码。

库通常将大的数字存储为一个数字序列,例如264。它们的限制与可用内存有关。因此,可以表示的最大数字与虚拟地址空间的限制有关。您可以放心地假设一个甚至大到1010000的数字可以用bignum表示。当然,a不能表示为bignum,因为它的位数大于宇宙中粒子的数量

另一个限制是算术运算的复杂性。但是存在非常有效的bignum算法

FWIW是一个为bignums设计的C库,只要有内存,它就可以处理数字。然而,有传言称,当malloc失败时,GMPlib正在流产

我不知道当一个数字太大而无法表示时,Go bignums内部会发生什么情况,并且限制在不同的机器之间变化,并且在不同的运行中可能会有所不同。例如,Go给出了一个乘积,其大小是参数大小之和,内存不足错误是未记录的,但显然可能发生


使用bignum时,更喜欢迭代算法而不是递归算法。例如,一个简单的递归阶乘可能会使调用堆栈溢出足够大的bignum,因此您需要对其进行迭代编码。

MaxUint32正是它的名称——32位的最大无符号整数。它是2^32-1,因为这是用32位二进制表示的最大数;二进制数字只重复了32个1:11111111111111111111111这是否正确地是数学/大库支持的最大值,对应于newInt值?通过图书馆或其他途径可以找到一个更大的吗?不,不是。事实上,该库的限制部分取决于您拥有的内存量。不,这根本不是最大值。根据软件包描述:package big实现任意精度算法,这意味着您可以使用任意大的数字,尽管您可能必须指定最大大小、精度,等等。如果你不熟悉浮点运算,我强烈建议你查阅大卫·戈德伯格的著名论文,了解每一位计算机科学家都应该知道的关于浮点运算的知识。这是一本很棒的书,内容丰富,应该可以帮助你理解指数的大小和精度是如何影响你的计算的。谢谢。我对这个库感兴趣的是整数,而不是浮点数。MaxUint32就是它的名字——32位的最大无符号整数。它是2^32-1,因为这是用32位二进制表示的最大数;二进制数字只重复了32个1:11111111111111111111111这是否正确地是数学/大库支持的最大值,对应于newInt值?通过图书馆或其他途径可以找到一个更大的吗?不,不是。事实上,该库的限制部分取决于您拥有的内存量。不,这根本不是最大值。根据软件包描述:package big实现任意精度算法,这意味着您可以使用任意大的数字,尽管您可能必须指定最大大小、精度等
C如果你不熟悉浮点运算,我强烈建议你查阅大卫·戈德伯格的著名论文,了解每一位计算机科学家都应该知道的关于浮点运算的知识。这是一本很棒的书,内容丰富,应该可以帮助你理解指数的大小和精度是如何影响你的计算的。谢谢。我对这个库感兴趣的是整数,不是浮点数。谢谢。你有没有一个示例程序,我可以运行它来看看,根据可用内存和你提到的其他限制,max会是什么样的?没有。我也不知道Go库是如何做到这一点的。实际上,你不应该在意。但实际上,我在乎!:我正在处理大阶乘,对于明显的超大数,会出现stackoverflow错误。我可能会反复试验,以测试上面和下面的射击算法,但超时需要一些时间,并且询问边界需要大量时间。Algo有点像这样:stackoverflow与bignum限制无关,而是与递归深度有关。将阶乘函数替换为循环中的一个计算阶乘。使用了内置的MulRange函数:看起来已经好多了:谢谢。你有没有一个示例程序,我可以运行它来看看,根据可用内存和你提到的其他限制,max会是什么样的?没有。我也不知道Go库是如何做到这一点的。实际上,你不应该在意。但实际上,我在乎!:我正在处理大阶乘,对于明显的超大数,会出现stackoverflow错误。我可能会反复试验,以测试上面和下面的射击算法,但超时需要一些时间,并且询问边界需要大量时间。Algo有点像这样:stackoverflow与bignum限制无关,而是与递归深度有关。将阶乘函数替换为循环中的一个计算阶乘。使用了内置的MulRange函数:看起来已经更好了: