為什麼計算機時間和眾多程式語言要從1970年1月1日開始算起
今天我們來討論一個非常有意思的事,那就是你知道為什麼計算機時間和眾多的程式語言的時間都要從1970年1月1日開始算起呢,時間計時起點到底為什麼是 1970年1月1號呢?我想大家應該都知道,但是我估計大家幾乎大部分都沒有想過這個問題。我們就一起來聊聊,這是為什麼?
1、最懶的解釋
很多程式語言起源於UNIX系統,而UNIX系統認為1970年1月1日0點是時間紀元,所以我們常說的UNIX時間戳是以1970年1月1日0點為計時起點時間的。
說了這個懶人的解釋,估計大家還沒有懂得真正的意思。所以我們接下來深入的瞭解一下。
2、深入的瞭解
最初計算機作業系統是32位,而時間也是用32位表示。
System.out.println(Integer.MAX_VALUE);
2147483647
Integer 在JAVA內用32位表示,因此32位能表示的最大值是2147483647。另外1年365天的總秒數是 31536000,2147483647/31536000 = 68.1,也就是說32位能表示的最長時間是68年,從1970年開始的話,加上68.1,實際最終到2038年01月19日03時14分07秒,便會到 達最大時間,過了這個時間點,所有32位作業系統時間便會變為10000000 00000000 00000000 00000000,算下來也就是1901年12月13日20時45分52秒,這樣便會出現時間迴歸的現象,很多軟體便會執行異常了。
到這裡,我想問題的答案已經顯現出來了,那就是:因為用32位來表示時間的最大間隔是68年,而最早出現的UNIX作業系統考慮到計算機產生的年代和應用的 時限綜合取了1970年1月1日作為UNIX TIME的紀元時間(開始時間),至於時間迴歸的現象相信隨著64為作業系統的產生逐漸得到解決,因為用64位作業系統可以表示到 292,277,026,596年12月4日15時30分08秒,相信我們的N代子孫,哪怕地球毀滅那天都不用愁不夠用了,因為這個時間已經是千億年以後 了。
相關文章
- 為什麼計算機時間要從1970年1月1日開始算起計算機
- 為什麼計算機時間要從1970年1月1日開始算起?計算機
- 為什麼程式要從0開始計數
- 為什麼程式設計中發現許多時間以1970年1月1日為基準程式設計
- 何為程式語言?為什麼要學C語言?C語言
- 為什麼要學習和使用C語言?C語言
- 為什麼會有這麼多程式語言
- 為什麼會有這麼多的程式語言?
- 程式設計師為什麼要時刻保持危機感?程式設計師
- 計算機語言設計:列表的理解以及為什麼它是有害的計算機
- 為什麼要學習一門新的程式語言?
- 程式語言那麼多,為什麼Google獨愛JS?GoJS
- 【譯】你的程式語言能做到這個嗎?(為什麼要學函數語言程式設計)函數程式設計
- 為什麼要學習Go語言呢?Go
- Java (計算機程式語言)Java計算機
- 為什麼python在眾多程式語言中脫穎而出?Python
- 為什麼那麼多人要學習go語言?go語言有什麼特點?Go
- 【敏捷0】敏捷專案管理-為什麼從敏捷開始?為什麼從PMI-ACP開始?敏捷專案管理
- Python語言的創始人解釋為什麼Python陣列的索引從0開始Python陣列索引
- Python 語言的創始人解釋為什麼 Python 陣列的索引從0開始Python陣列索引
- 眾多程式語言如何抉擇
- 設計師為什麼要學程式設計,開發者為什麼要學設計?程式設計
- 我為什麼開始寫技術公眾號
- 程式語言這麼多,為什麼建議選擇Python?Python
- Google 大佬們為什麼要開發 Go 這門新語言?Go
- 松本行弘:我為什麼要開發新語言Streem(上)
- JavaScript函數語言程式設計之為什麼要函數語言程式設計(非嚴謹技術層面的扯淡)JavaScript函數程式設計
- 《Java 8函數語言程式設計》選讀:為什麼要給Java 8中加入函數語言程式設計?Java函數程式設計
- 程式碼之間為什麼要加空格?
- 為什麼程式設計師應該從現在就開始看書程式設計師
- 為什麼畫素遊戲開始變多?遊戲
- 論機器學習和程式語言:ML需要專用的計算機語言嗎?機器學習計算機
- 彭民德:《電子計算60年》 (13) 程式語言曾被人無端稱作計算機語言計算機
- 優秀的開發者為什麼要學習研究新的程式語言?
- 為什麼需要更多的程式語言
- 為什麼程式設計師不擅長估算時間程式設計師
- 為什麼學習web前端開發,必須要掌握好JavaScript這門程式語言?Web前端JavaScript
- 程式設計師為什麼討厭這些語言程式設計師