2 的 100 次方到底有多大?葉飛影2016-11-23 09:21:56

有辣麼大:1267650600228229401496703205376

——————————————————————-

看到評論中有人問我是怎麼算出這個數的,就醬紫:

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

其實這個數並不算大,至少Windows上的計算器可以精確計算。

知乎上有另一個問題:31! 的結尾有多少個0?

31! = 82 2283 8654 1779 2281 7725 5628 8000 0000

還碰到過一個更變態的問題:99999的階乘的第一位數是幾?

於是寫了一個C++小程式,用於計算大數相乘:

#include

#include

#include

#include

#include

#include

#include

#include

class Integer

{

public:

Integer()

{

}

Integer(unsigned int value)

{

SetValue(value);

}

~Integer()

{

Clear();

}

void SetValue(unsigned int value)

{

Clear();

unsigned int v;

while (value > 0)

{

v = value % 10000;

m_vecNodes。push_back(v);

value /= 10000;

}

}

void Clear()

{

m_vecNodes。clear();

}

void Multiply(unsigned int v)

{

size_t count = m_vecNodes。size();

for (size_t i = 0; i < count; i++)

{

if (m_vecNodes[i])

{

m_vecNodes[i] *= v;

}

}

for (size_t i = 0; i < count; i++)

{

if (m_vecNodes[i] > 10000)

{

unsigned int k = m_vecNodes[i] / 10000;

m_vecNodes[i] %= 10000;

if (i < count - 1)

{

m_vecNodes[i + 1] += k;

}

else

{

while (k > 0)

{

unsigned int vv = k % 10000;

m_vecNodes。push_back(vv);

k /= 10000;

}

}

}

}

}

void Print() const

{

size_t count = m_vecNodes。size();

if (count == 0)

{

return;

}

if (m_vecNodes[count - 1] > 999)

{

printf(“%d ”, m_vecNodes[count - 1]);

}

else if (m_vecNodes[count - 1] > 99)

{

printf(“ %d ”, m_vecNodes[count - 1]);

}

else if (m_vecNodes[count - 1] > 9)

{

printf(“ %d ”, m_vecNodes[count - 1]);

}

else

{

printf(“ %d ”, m_vecNodes[count - 1]);

}

for (int i = (int)(count - 2); i >= 0; i——)

{

if (m_vecNodes[i] > 999)

{

printf(“%d ”, m_vecNodes[i]);

}

else if (m_vecNodes[i] > 99)

{

printf(“0%d ”, m_vecNodes[i]);

}

else if (m_vecNodes[i] > 9)

{

printf(“00%d ”, m_vecNodes[i]);

}

else

{

printf(“000%d ”, m_vecNodes[i]);

}

if (i % 10 == 0)

{

printf(“\r\n”);

}

}

}

bool SaveToFile(const char* szFileName) const

{

size_t count = m_vecNodes。size();

if (count == 0)

{

return false;

}

FILE * fp = ::fopen(szFileName, “wb”);

if (!fp)

{

return false;

}

if (m_vecNodes[count - 1] > 999)

{

fprintf(fp, “位數: %d \r\n”, (count - 1)*4 + 4);

fprintf(fp, “%d ”, m_vecNodes[count - 1]);

}

else if (m_vecNodes[count - 1] > 99)

{

fprintf(fp, “位數: %d \r\n”, (count - 1)*4 + 3);

fprintf(fp, “ %d ”, m_vecNodes[count - 1]);

}

else if (m_vecNodes[count - 1] > 9)

{

fprintf(fp, “位數: %d \r\n”, (count - 1)*4 + 2);

fprintf(fp, “ %d ”, m_vecNodes[count - 1]);

}

else

{

fprintf(fp, “位數: %d \r\n”, (count - 1)*4 + 1);

fprintf(fp, “ %d ”, m_vecNodes[count - 1]);

}

unsigned int itor = 1;

for (int i = (int)(count - 2); i >= 0; i——)

{

if (m_vecNodes[i] > 999)

{

fprintf(fp, “%d ”, m_vecNodes[i]);

}

else if (m_vecNodes[i] > 99)

{

fprintf(fp, “0%d ”, m_vecNodes[i]);

}

else if (m_vecNodes[i] > 9)

{

fprintf(fp, “00%d ”, m_vecNodes[i]);

}

else

{

fprintf(fp, “000%d ”, m_vecNodes[i]);

}

if ((++itor) % 10 == 0)

{

fprintf(fp, “\r\n”);

}

}

::fclose(fp);

ShellExecuteA(NULL, “open”, szFileName, NULL, NULL, SW_SHOWNORMAL);

return true;

}

std::vector m_vecNodes;

};

void main()

{

Integer aaaa;

aaaa。m_vecNodes。resize(65536*256);

aaaa。SetValue(31);

for (unsigned int i = 30; i > 1; i——)

{

aaaa。Multiply(i);

}

aaaa。SaveToFile(“c:\\31。txt”);

aaaa。SetValue(99999);

for (unsigned int i = 99998; i > 1; i——)

{

aaaa。Multiply(i);

if (i % 50 == 0)

{

printf(“%d \r\n”, i);

}

}

aaaa。SaveToFile(“c:\\99999。txt”);

}

執行該程式後,會生成存放99999階乘的一個檔案:

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

檔案大小有580K,位數: 456569

2 的 100 次方到底有多大?好大的風2016-11-29 17:32:00

粗略相當於一架全鋁的波音737裡面鋁原子的數量。

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

2^100約等於1。27x10^30;

1mol粒子有6。02x10^23個粒子;

也就是說,2^100約等於2。1x10^6mol。

又有,1mol的鋁原子質量大概是27克。

因此2^100個鋁原子,質量大約是5。67x10^7克,也就是56。7噸。大概是個小飛機的重量。

(搜了下波音737空載是61。6噸,基本差不多。因為波音系列的材料主要都是鋁合金,因此用鋁來衡量。)

2 的 100 次方到底有多大?仙翁大桃子2016-11-30 00:06:24

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

我知道我算錯了,但是我拒絕檢查【傲嬌臉】

2 的 100 次方到底有多大?知乎使用者2016-11-30 08:48:16

假設一張

可以充分摺疊

的紙厚度為0。1毫米;在不計紙張本身以外的任何厚度的情況下,將其對摺n次後,其厚度為

h=2^n\times 0.1mm

。 那麼:

對摺10次,厚度達到約0。1米,差不多是一根尺子吧;

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

對摺15次,厚度超過3米,顯著長於姚明;

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

對摺20次,厚度大約105米,顯著長於

民用客機

(一般機身長度六十餘米);

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

對摺25次,厚度大約3355米,這個高度已經超過峨眉山的海拔了,更早已把五嶽全都踩在了腳下;

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

對摺30次,厚度大約107千米(107374米)不要說珠峰,這個高度已經足以穿過對流層、平流層、中間層,進入大氣層之中的熱層(暖層)了;

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

對摺35次,厚度大約3436千米,已經足夠完全離開大氣層了;

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

對摺40次,厚度大約109950千米,一次可繞地球兩圈半!

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

對摺45次,厚度大約351萬千米,可以來回月球接近五次。

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

對摺50次,厚度達到1。1億千米,可以來回金星一次。

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

對摺51次,厚度達到約2。3億千米,遠遠足以到達太陽。

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

別忘了,這個時候,咱們才剛折了一半。

對摺57次,厚度約為144億千米,近似趕上

旅行者1號

的足跡、

離開太陽系

了。

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

對摺60次,厚度達到約1153億千米,光大約需要穿梭4。4天。

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

對摺70次,厚度達到118萬億千米,大約12光年,以此別說去往離我們最近的太陽以外的恆星——比鄰星綽綽有餘、甚至來回巴那德星都夠了。

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

對摺80次,厚度達到12億億千米,大約1。2萬光年,大約走到我們和銀河系中央的中點;

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

對摺90次,厚度達到12379億億千米(如果喜歡的話,1。2萬億億千米),大約1300萬光年,是銀河系直徑的一百倍。

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

激動人心的時刻終於到來了:

對摺100次,厚度達到1268萬億億千米,也即12,676,500,000,000,000,000,000千米^-^

如果換算一個更加直觀的單位的話,這個厚度大約摺合134億光年。

也就是說,如果我們把紙疊的這麼高,需要接近

從宇宙大爆炸到現在的全部時間

(137億年)使得光從這張疊紙的頂端到達我們的眼中。

沒錯,大爆炸!

2 的 100 次方到底有多大?

2 的 100 次方到底有多大?

注1:圖自網路,侵刪;

注2:資料和計算只代表粗略估值;

注3:

若聽說傳聞稱一張紙最多隻能摺疊7次,

請參看此影片

https://www。

youtube。com/watch?

v=kRAEBbotuIE

(流言終結者-將一張紙折過七次/MythBusters- Folding Paper Seven Plus Times) 其中將一張足夠大、足夠軟的紙對摺了十一次。

——————————————————————————————————————————————————————————————————

補一個關於質量運算來說明為什麼人類不可能製造出這樣的一張紙:

假設摺疊完成後的每一層面積僅為1平方釐米,(在長度上百億光年的情況下,這樣的面積顯然已經嚴重過小了,但是為運算的便宜,不妨借用這個假設)

按照一般白紙定量

0.006 g/cm^2

來算,整個疊紙的總質量將為

2^{100}\times 1 cm^2\times  0.006 g/cm^2\approx

7.6\times 10^{24} kg

, 是整個地球的質量的1。2倍。(地球質量大約

6.0\times 10^{24} kg

2 的 100 次方到底有多大?Lightwing2016-12-01 08:17:19

主要從Data(資訊量)這個角度出發吧:

一般硬碟:

2^43 位元

。(一位元:0、1)

世界歷來所有【unique】書本(兩億多本):

2^50 位元

世界歷來所有【unique】電影、電視內容及網路影片:至少

2^60 位元

整個人類歷史上所有人說過的所有話,總單詞量:

2^65

谷歌公司儲存的資訊量:

2^67 - 2^68 位元

(相當於幾千萬個普通硬碟吧)

世上所有人的腦細胞總量:

2^70

整個世界儲存的所有【unique】數碼化內容:

2^72 位元

(這裡unique的意思是不包括任何重疊內容。如果包括重疊內容,估計2^76以上)

如果想接近 2^100 位元,只能猜想:

假設世界上每一個人每一個腦細胞裡面都存了一部高畫質電影

。大概是這樣的資訊量。

或者,假設世界上每一把手機都有谷歌公司規模的資料量,也差不多。

說實話,人類將來很有可能實現這個量。這方面好多“資料量”正在以一年30%的速度擴充套件。

所以,整體人類數碼儲存大概用不到50年,就可以突破2^100。

更誇張的資訊量概念也有。不過要抽象一些,用到information theory之類的。譬如:

“一個人”的資訊量(包括每個原子的具體位置、結構等等):2^150 位元。

“一個地球”的資訊量:2^190 位元。“宇宙”資訊量:2^305。等等。

——-

計算能力:

現在一般處理器裡面有幾十億 (2^30 - 2^33) 電晶體。

目前最強的“超級電腦”《太湖之光》,含有 2^54 電晶體以上。(可能不止)

把全世界所有電晶體加起來,包括手機、還有各種機器。。。 2^74 左右。

這個數已經超過了上面所說的“世上所有人的腦細胞總量”。

電晶體非常小,比腦細胞小多了(立方奈米規模 vs 細胞:立方微米規模)。

如果把一個腦細胞裝滿電晶體,大概可以裝得下數十億 2^30。

如果把世界全部電晶體堆積在一起,總體量大概湊不到一個立方米。

(這麼小的一堆東西今年超過了所有人類腦細胞數量。。。已經很不錯了)

所以,從這個角度推理一下,要是有 2^100 電晶體,只需要 20m * 20m * 20m 的空間。

或者說,理論上,那麼強大的計算力(以及資訊儲存、等),並不需要佔多大地方。

實際上,我們目前還無法給這麼大一堆密集東西散熱,還有各種現實障礙,但是將來還會有很多比電晶體更微小更高效率的神秘零件(分子計算、等)。

說不定一百年以後就能出現這種“超過整個人類”的超級電腦,直接裝在一個小殼子裡面。

——-

另外,這些諸多電晶體所組成的處理器,計算的速度比人類快很多。

有些爭議,但是一般專家似乎認為“人腦頻率”在 2^10 - 2^15 Hz Hertz 之間。

(人類“計算”A+B=C之類的,確實還要慢更多, 2^4 Hertz 的水平都不一定有。個人感覺這是化學反應傳資訊所導致的速度障礙,比光速慢得多。。。只是因為人腦結構特殊,起碼有五六層,所以其他類別抽象問題表現得還不錯)

然而,很多計算機的頻率已經超過 2^30 Hertz。(一臺智慧手機就能夠每秒計算數億物件)

《太湖之光》速度為每秒 2^56 FLO (float operations)。

一部FLO似乎已經是好幾十個普通計算組成的。

所以得把“時間”這個維度加進來。

這種超級電腦需要多久才能算2^100個物件?

。。。50萬年!!

(想起了《銀河系漫遊指南》中的“深思”AI,思考“宇宙之謎”一千萬年,最後只打出:“42”)

就算你把全世界所有電腦都拉到同一個問題上,把時間再縮短几萬倍;仍然需要好幾年時間才能完成。讓全世界所有處理器合作,勉勉強強才可以控制在一年之內。

額。。。所以。。。軟體和演算法很重要。。。沒有太多現實問題真需靠 2^N 個計算。

總之,我覺得,從“計算力”這個角度看,2^100 根本沒有那麼遙遠。

——-

文末幾個維基百科頁面有介紹很多其他接近 2^100 的現象(或者比例)。列幾個比較有趣的:

世界細菌數量:2^103

世界細胞數量:2^108 ?

一個人身體裡面的原子量:2^93 ?

世界上能出現多少個不一樣的人:2^110

(因為有 2^32 男性,2^32 女性,有2^46染色體匹配法。。。)

德州撲克的獨特佈局數量:2^94 取一。

(或者說,兩場撲克完全重複,包括所有人手牌和中間牌的機率為 2^94 取一)

當然還有:扔100個硬幣,全部朝上的機率為 2^100 取一。

數獨:2^73個不同佈局。魔方:2^67。有個類似魔方的東西叫Alexander‘s Star:2^110。

10^103 個沙子才能裝滿一個地球的容量。或者10^98 粒米飯。

有關容量,重量,能量,長度什麼的,很多其他答案提到過了。

不過地球之外的概念,很多時候還是無法直接構想。

——-

推薦這些:

Orders of magnitude (data)

Orders of magnitude (numbers)

Orders of magnitude (volume)

Orders of magnitude (length)

Orders of magnitude (mass)

Orders of magnitude (time)

Orders of magnitude (energy)

Orders of magnitude (temperature)

Orders of magnitude (currency)

Orders of magnitude (probability)

估計還有各種類似的列表可以參考一下。