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