歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> 千年蟲後還有蟲 2038年問題浮出水面

千年蟲後還有蟲 2038年問題浮出水面

日期:2017/2/27 14:17:47   编辑:更多Linux

“千年蟲”解決之後,會不會有新的“蟲”出現?回答是肯定的,“2038年”就是一個新的關卡。 網絡時代,機會與危機共存,這也許是你我必須面對和必須付出的代價。“千年蟲”解決之後,會不會有新的“蟲”出現?回答是肯定的,“2038年”就是一個新的關卡。 也許大家都已經知道計算機的2000年問題是什麼概念,但是什麼時候又冒出來一個2038年問題的呢? 用C語言編制的程序不會碰到2000年問題,但是會有2038年問題。這是因為,大多數C語言程序都使用到一個叫做“標准時間庫”的程序庫,這個時間庫用一個標准的4字節也就是32位的形式來儲存時間信息。 當初設計的時候,這個4字節的時間格式把1970年1月1日凌晨0時0分0秒作為時間起點,這時的時間值為0。以後所有的時間都是從這個時間開始一秒一秒累積得來的。 比方說如果時間已經累積到了919642718這個數值,就是說這時距離1970年1月1日凌晨0時0分0秒已經過去了919642718秒,換算一下就應該是1999年2月21日星期天16時18分38秒。 這樣計算時間的好處在於,把任意兩個時間值相減之後,就可以很迅速地得到這兩個時間之間相差的秒數,然後你可以利用別的程序把它換算成明白易懂的年月日時分秒的形式。 要是你曾經讀過一點兒關於計算機方面的書,你就會知道一個4字節也就是32位的存儲空間的最大值是2147483647,請注意!2038年問題的關鍵也就在這裡———當時間一秒一秒地跳完2147483647那驚心動魄的最後一秒後,你猜怎麼樣? 答案是,它就會轉為負數也就是說時間無效。那一刻的准確的時間為2038年1月18日星期一晚上10時14分7秒,之後所有用到這種“標准時間庫”的C語言程序都會碰到時間計算上的麻煩。 這就是2038年問題。 但是大家也不用太過緊張。2038年問題比Y2K的問題解決起來相對要容易一些,只要給那些程序換一個新版本的“標准時間庫”就可以了,比如說,改用8字節64位的形式來存儲時間。這樣做並不怎麼費事,因為在C程序中“標准時間庫”是相對獨立的一個部分,裡面的時間表達都有自己的一套時間類型和參數(而在碰到Y2K的那些大型主機中,時間格式大都沒有統一)。 說到這裡,一些冰雪聰明的菜鳥DDMM們應該可以聯想到,Win?dowsNT用的是64位操作平台,它的開始時間是1601年1月1日———但是它每過1個納秒就跳一下,因此,WindowsNT它會碰到的是2184年問題…… 而在一些用64位來表示時間的平台上,例如DigitalAlpha、SGI、Sparc等等,想要看到它們的時間出錯你得等到天荒地老———那大概是292億年。到那時,位於獵戶座旋臂的太陽,已經是黑矮星或暗黑物質,獵戶座旋臂已經被重力波震斷,銀河系大概則已經變成小型似星體了。 所以,給那些准備攢機的菜鳥DD一個建議,除非您想要把資料流傳給下一個宇宙,一台64位的電腦已經足夠。(千龍新聞網)




Copyright © Linux教程網 All Rights Reserved