雷炳新
當你打開手機系統設置,關閉自動設置時間,往未來的方向滑動時,你會發現時間停在了2037年。當你嘗試將時間從2037年往后調整時,不管怎么按設置按鈕,日期都不會變動。
在網上搜尋2038,你還能發現有人專門設置了倒計時網頁。這其中包含了一個更加精確的時間:2038年1月19日3點14分7秒。而14分8秒永遠不會到達,下一秒,你的電子設備將會顯示1901年12月13日20點45分52秒。有人戲謔道:“2038年才是真正的世界末日。”
為什么會出現這種現象呢?
其實,這和我們目前廣泛使用的操作系統有關。現在的手機,不管是安卓版還是蘋果版,都使用的是Unix系統。這個系統的計時方式是以1970年1月1日00∶00∶00為基準,按秒為單位進行增減。比如,時間要推到2022年1月1日0點,只需要用基準值加上1640966400秒就可以了。
電子系統使用0和1儲存數據,也就是二進制。如果只用1位數,只能表示0和1,如果是2位數,則可以用00、01、10、11分別表示0、1、2、3這四個數。隨著位數的增加,二進制可以表示的數也越來越大,但總會遇到上限。如果用32個0、1儲存數字,第一位表示符號,0代表“+”,1代表“-”,剩下31位最大可以表示2147483647。在計算機資源非常寶貴的年代,用32位來放置時間,已經很夠用了。
1970年1月1日00∶00∶00+
2147483647秒=2038年1月19日3點14分7秒。下一秒,數據就會出現“裝不下”的情況,發生溢出。此時,第一位符號位從0變成1,本來的加號變成了減號,時間突然穿越到過去。
其實,這種計算機系統會導致表示將來時間的問題上,計算機系統在千禧年到來時已遭遇過危機。
2000年,這種計算機系統會導致很多應用程序將這一年顯示成1900年。因為硬件資源寶貴,早期程序只使用了年份的后兩位數字來表示日期,而前兩位數都默認為19。這個不起眼的時間設置問題,將在千禧年到來時,導致政務系統、銀行系統、航空系統等多個系統都受到影響而失效。在全球科學家的努力下,這一問題終于在千禧年到來之前成功解決。
但在此之后,類似“千年蟲”的事件依然時有發生。
2010年的第一周,德國約3000萬張銀行卡同時“失效”,持卡人不僅無法直接刷卡消費,連在自動取款機上取錢都成問題。這不僅影響了居民的生活,還導致在外度假的德國人滯留當地。后來科學家發現,由于不同編碼方式存在差異,2010在德國的銀行系統中被錯誤地識別成2016,銀行卡因此“被過期”了,無法使用。同樣的情況還出現在使用Windows Mobile系統的手機上,比如你在2010年第一天收到的新年短信,會被系統顯示成2016年。
2013年9月,美國航天器“深度沖擊”突然失聯,探測任務被迫中斷,其首席任務科學家邁克·埃亨認為,這是一個“千年蟲問題”——航天器的部分軟件無法識別2013年8月11日之后的日期,導致計算機不斷重啟。最終,科學家們失去了該航天器的信號。
在未來,“類千年蟲”問題一定還會出現。對可以預料的問題,人們已經開始嘗試新的解決方法,比如使用新的格式存儲時間信息等。未雨綢繆,是智慧人生最顯著的特點。46959EF9-4829-46A2-8694-6A6099C9A635