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