爲什麼計算機起始時間是1970年1月1日

1969年8月,貝爾實驗室的程序員肯湯普遜利用妻兒離開一個月的機會,開始着手創造一個全新的革命性的操作系統,他使用B編譯語言在老舊的PDP-7機器上開發出了Unix的一個版本。隨後,湯普遜和同事丹尼斯里奇改進了B語言,開發出了C語言,重寫了UNIX,新版於1971年發佈。

那時的計算機操作系統是32位,時間用32位有符號數表示,則可表示 68 年,
用32位無符號數表示,可表示136年。
他們認爲 以 1970年 爲時間 原點 足夠可以了。 因此,C 的 time 函數 就這麼 定了,後來的 java 等也用它,微機也用它,工作站本來就是unix系統當然也用它。(今後若用64位機年限更沒問題。)

32位能表示的最大值是2147483647,另外1年365天的總秒數是31536000,
2147483647/31536000
68.1

也就是說32位能表示的最長時間是68年,而實際上到2038年01月19日03時14分07
秒,便會到達最大時間,過了這個時間點,所有32位操作系統時間便會變爲
10000000000000000000000000000000
也就是1901年12月13日20時45分52秒,這樣便會出現時間迴歸的現象,很多軟件便會運行異常了。

到這裏,我想問題的答案己經出來了:

因爲用32位來表示時間的最大間隔是68年,而最早出現的UN以操作系統考慮到計算
機產生的年代和應用的時限綜合取了1970年1月1日作爲UNTIME的紀元時間(開始
時間)
至於時間迴歸的現象相信隨着64爲操作系統的產生逐漸得到解決,因爲用64位操作
系統可以表示到292,277,026,596年12月4日15時30分08秒,相信我們的N代子孫,哪怕地球毀滅那天都不用愁不夠用了,因爲這個時間己經是千億年以後了。

原文鏈接:https://blog.csdn.net/csdn_kou/article/details/81535452

發佈了66 篇原創文章 · 獲贊 9 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章