2038年問題

出自維基百科,自由嘅百科全書
跳去導覽 跳去搵嘢
2038年問題示範:第一行係 time_t數值嘅二進制表示;第二行係十進制表示;第三行係領咗嘢嘅電腦出嘅時間;第四行係實際時間

2038年問題(又叫 Unix 千年蟲Y2K38Y2K+38Y2038K)係指因為 Unix 操作系統嘅計時方法而可能搞到一啲軟件2038年出錯。好簡單咁講,因為 Unix 有正負整數卅二時間限制,即係由1970年1月1號0時0分0秒 [1],再過2³¹咁多秒,去到2038年初,日子會跳「返轉頭」,搞到啲軟件唔知係幾時,啲嘢就錯晒。

卅二爻時間限制[編輯]

喺 Unix 系統同埋啲類Unix系統,係用嚟計時間,每秒用一爻(bit)嚟代表。用嚟代表時間嘅資料類型叫 time_t,定義係一個正負整數(signed integer),傳統上有 32 爻咁大,而 time_t = 0 就規定咗係世界協調時間 1970年1月1號 0時0分0秒。所以,當 time_t = 10001,時間就係 1970年1月1號 1時0分1秒。如似類推,響 2 嘅 31 次方(即係 2147483648)咁多秒之後,所有可以代表正數嘅整數都用晒,2038年1月19號 3點14分07秒就係最後可以代表得到嘅時間。

2147483648 咁多秒之後,個系統就會返轉頭(wrap around),變成 32 爻可以表示最細嘅負數,跳返1901年。令啲程序一要計時間嘅嘢就錯晒,因為佢哋無法將呢個時間識別為2038年。可能產生錯誤嘅計算同錯誤嘅動作。

有一啲系統嘅 time_t 去到 64 爻咁大,呢啲系統如果唔需要處理 32爻嘅 time_t 資料唔會受到影響。

睇埋[編輯]

參考[編輯]

  1. "The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition (definition of epoch)". IEEE and The Open Group. The Open Group. 2004. 喺2008-03-07搵到.

連結[編輯]