Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从左到右计算googolplex二进制文件_Javascript_Php_C++_C_Numbers - Fatal编程技术网

Javascript 从左到右计算googolplex二进制文件

Javascript 从左到右计算googolplex二进制文件,javascript,php,c++,c,numbers,Javascript,Php,C++,C,Numbers,如何计算(10^(10^100))从左边开始的前导N(例如:100)个二进制数字 我知道如何从右到左计算二进制,但这可能需要数百年()才能运行…没有答案,但有一个进一步分析的建议 如果需要二进制,则需要从第N位开始的位,其中N=X+1,其中X描述如下: 2^X=10^(10^100) 取对数(b=10)=> X=10^100/对数(2)==>~3.3 E 100 仍然不确定如何从那里减少它,但也许玩对数恒等式可能会很有趣。如果你能计算X,也许你能想出一个长除法算法,尽管你参考资料中的runnin

如何计算(10^(10^100))从左边开始的前导N(例如:100)个二进制数字


我知道如何从右到左计算二进制,但这可能需要数百年()才能运行…

没有答案,但有一个进一步分析的建议

如果需要二进制,则需要从第N位开始的位,其中N=X+1,其中X描述如下:

2^X=10^(10^100) 取对数(b=10)=>

X=10^100/对数(2)==>~3.3 E 100

仍然不确定如何从那里减少它,但也许玩对数恒等式可能会很有趣。如果你能计算X,也许你能想出一个长除法算法,尽管你参考资料中的running time参数让我想象计算X的运行时可能是相同的。也就是说,600年后见

另一个想法可能是研究数字协处理器如何以二进制形式创建iEEE尾数

也许有一个算法,你可以利用这样的东西


只是猜测而已,所以一些基础数学有助于勾勒出方法的轮廓。我将强调一些要点:

  • 您需要准确地计算二进制的左数字
  • 数字在数学上与基数的乘法/除法无关
  • 幂等于对数空间中的乘法
  • 乘/除基数相当于在日志空间中添加整数
BitBlitz有一个正确的想法——你可以用对数来解决这个问题。特别是,取以2为底的10的对数,乘以10^100,忽略(以2为底)小数位左侧的所有内容。给你一个想法,10^100显然是100位数;使用1K=2^10=10^3近似值,即大约100/3k或33K乘以10,即大约330位向左移动日志,以通过所有您不关心的位。一旦你翻了一遍,开始敲二进制的“小数”,你将计算数字的对数——从左到右。收集大量这样的数字,对其进行反向记录,得到的二进制数字将与您想要得到的匹配


对于这个任务,您肯定需要一个bignum库;长双人赛根本不可能成功。但是,使用这种方法收集合理数量的最左边的数字应该是合理可行的

根据链接:
…Carl Sagan估计,以标准形式(即“1000000000…”)编写googolplex在物理上是不可能的,因为这样做需要比已知世界中可用的空间更多的空间。但是如果我只想计算前100个二进制数字,可能吗?我不明白前N个二进制数字的计算是什么意思。@FiddlingBits我指的是它的左边,例如:1000dec=11111 01000b,前6个二进制数字是“11111 0”,可能我应该使用“前导”=)