為什麼計算機時間和眾多程式語言要從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日開始算起計算機
- 為什麼程式要從0開始計數
- 何為程式語言?為什麼要學C語言?C語言
- 為什麼會有這麼多的程式語言?
- Java (計算機程式語言)Java計算機
- 【譯】你的程式語言能做到這個嗎?(為什麼要學函數語言程式設計)函數程式設計
- 為什麼python在眾多程式語言中脫穎而出?Python
- 為什麼要學習Go語言呢?Go
- 程式語言這麼多,為什麼建議選擇Python?Python
- 眾多程式語言如何抉擇
- 為什麼那麼多人要學習go語言?go語言有什麼特點?Go
- JavaScript函數語言程式設計之為什麼要函數語言程式設計(非嚴謹技術層面的扯淡)JavaScript函數程式設計
- 優秀的開發者為什麼要學習研究新的程式語言?
- 【敏捷0】敏捷專案管理-為什麼從敏捷開始?為什麼從PMI-ACP開始?敏捷專案管理
- Google 大佬們為什麼要開發 Go 這門新語言?Go
- 程式碼之間為什麼要加空格?
- GO語言————6.11 計算函式執行時間Go函式
- Python語言如此受歡迎 學習Python要多長時間Python
- 為什麼要學習Python語言?Python入門Python
- 我為什麼開始寫技術公眾號
- 程式設計師為什麼討厭這些語言程式設計師
- 為什麼學習web前端開發,必須要掌握好JavaScript這門程式語言?Web前端JavaScript
- 用C++從0開始開發自己的程式語言C++
- 學習Python語言為什麼要參加培訓?Python
- 從 0 開始實現程式語言(一):手寫 jsonParserJSON
- 如何學習一門計算機程式語言計算機
- 從零開始學C語言pdfC語言
- 從零開始——GO語言基礎語法Go
- 為什麼自制指令碼語言是程式語言的最高境界?指令碼
- 為什麼中國開發不出流行的作業系統和程式語言作業系統
- 為什麼很多公司都轉型go語言開發?Go語言能做什麼Go
- 為什麼畫素遊戲開始變多?遊戲
- Scala 函數語言程式設計(一) 什麼是函數語言程式設計?函數程式設計
- GO語言————4.8 時間和日期Go
- 為什麼要“東數西算”?
- 為什麼要成為「無敵」程式設計師?程式設計師
- 計算機為什麼要用補碼計算機
- (計算機二級C語言)程式修改題<99>計算機C語言
- 為什麼“敏捷”會浪費這麼多時間? - Reddit敏捷