千年蟲是什麼?

2007-05-07 1:10 am
係2000年既時候
話有千年蟲
影響到電腦(電視影唔影響到?)
咁千年蟲係d咩呢?

回答 (3)

2007-05-07 1:15 am
✔ 最佳答案
何謂「千年蟲」

千 年 蟲 問 題 乃 源 自 電 腦 處 理 年 份 的 方 法 。 由 於 電 腦 發 展 初 期 極 為 昂 貴 , 而 且 記 憶 容 量 較 低 , 所 以 為 了 增 加 效 率 及 容 量 , 便 將 年 份 的 四 位 數 字 簡 化 至 二 位 數 字 , 例 如 以 '99' 代 替 1999年 。 因 此 , 當 2000年 被 簡 化 為 '00' 時 , 電 腦 可 能 會 誤 認 這 是 1900 而 非 2000年 。 若 不 解 決 此 問 題 , 有 關 日 期 的 數 據 、 計 算 、 比 較 、 排 序 就 可 能 出 錯 。 此 電 腦 故 障 被 稱 為 「 千 年 蟲 」 。 千 年 蟲 問 題 不 但 存 在 於 電 腦 軟 件 中 , 它 還 存 在 於 內 置 微 處 理 器 的 設 備 和 儀 器 中 , 影 響 之 廣 , 從 家 居 的 電 子 產 品 以 至 汽 車 、 醫 療 及 保 安 系 統 、 通 訊 產 品 等 , 可 謂 無 處 不 在 , 更 直 接 影 響 您 的 日 常 生 活 。 而 在 商 業 應 用 方 面 , 由 於 電 腦 上 的 失 誤 , 更 可 能 導 致 財 務 或 賬 目 偏 差 。

千年蟲之所以引發到廣泛的關注,其原因是千年蟲的影響絕不止於電腦的應用,它的影響小至一部家居的錄影機 ,大至一架空中巴士的操控問題也會涉及。只因現今科技一日千里, 電腦的應用可以說是無處不在......在1997年,全世界開始關注「千年蟲」這個問題。所謂的千年蟲危機,是指電腦在邁入下一個世紀時,是否能夠:

正確辨識公元2000年及之後的年份,而不會誤識為是1900年或1980年 或1984年或其他的年份?
正確地運算和處理公元2000之後的閏年(二月份含 29 天的年份)?
這個問題會在我們以兩位數來表示年份時產生。
邏輯運算 數學計算
四位數 兩位數 四位數 兩位數
1998 > 1997 98 > 97 1998 - 1997 = 1 98 - 97 = 1
2001 > 1999 01 < 99 2001 - 1999 = 2 01 - 99 = -98
** 兩位數的年份計算,在公元2000年後會產生與四位數計算迥然不同的邏輯或數學計算結果。

此外,某些程式可能將「00」、「99」等年份賦予特殊意義,比如在某程式中「00」 表示「未知年份的資料」,「99」表示「永不刪除的資料」,那麼到了1999年 和2000年,這類程式由於邏輯上的錯亂而產生了我們預期不到的結果。

千年蟲存在的原因

在以往,電腦的記憶體以及儲存配備價格昂貴,直到近年才大幅調低 。 因此,為了節省空間,很多關於「年份」的儲存與計算都只取最後的兩位數,也就是 將「1998」年寫成「98」,而略去前面記錄世紀的兩位數。人們在日常生活 習慣上也常以兩位數來表示年份。可是到了公元2000年的時候,當年份前兩位 記錄「世紀」的數字轉換,而後兩位數字歸零時,便可能會引發「千年蟲危機」了...

只記錄「年份」 記錄「世紀」和「年份」
MMDDYY MMDDYYYY
083198 08311998
** 使用兩位數記錄年份可以節省 2/8 = 25% 的儲存空間

千年蟲危機會到了公元2000年才發作嗎?答案是否定的,因為程式的運算中可能 包含涉及未來時間的運算。比如說:一項為期三年的分期付款計畫的利息計算公式中, 也許會有「三年後」的年份出現。許多類似涉及未來時間運算的場合,都可能在公元 2000來臨之前就已經出問題了!

對電腦而言,會受千年蟲影響的地方

主機板上的 Real Time Clock (RTC) 晶片
這是大多數系統中,電腦時鐘資訊的最原始來源。RTC 靠主機板上的電池維持運作, 無論電腦正在使用中或被關掉電源都會一直運作。市面上的 RTC 晶片多以 BCD (即 Binary Coded Decimal) 方式來儲存日期與時間。據了解,市面上的 RTC 多以兩位 數來儲存「年份」,另有兩位數儲存「世紀」。可是測試結果顯示目前大多數的 RTC 到了公元2000年時並不會自動更換其「世紀」欄位,也就是目前全世界大多 數電腦的 RTC 都經不起千年蟲的考驗。不過不用擔心,此問題多可通過 BIOS 層面 來解決。
電腦的 BIOS 和 CMOS 時間
除了少數工作站擁有本身獨立運算的 BIOS 時間之外,大多數電腦的 BIOS 和 CMOS 時間都取自 RTC。因此,即使 BIOS 本身能夠處理自己的千年蟲問題但不能察覺來自 RTC 的千年蟲危機的話,還是會功虧一簣的。目前大多數 BIOS 廠商的已推出 Y2K Compliant 的 BIOS。所謂的 Y2K Compliant BIOS,其對於處理千年蟲問題的主要 措施有:
確保本身從 1900 年至 2035 年的日期處理與運算都沒有問題。
能夠察覺來自 RTC 的千年蟲問題並自行修正以免本身的時鐘受影響。

作業系統的時間
作業系統本身的時鐘多是參考自 BIOS 的時間。只要 BIOS 能夠處理 好千年蟲問題,目前一般作業系統如 Windows 98、Unix、Mac OS 等的時間,理論 上應該不會受到千年蟲的影響。
作業系統的 shell
作業系統的時鐘本身也許沒有問題,但問題卻可能由於作業系統的 shell 層次 在時間的處理方面有瑕疵而產生。比如說:Windows 95 的 command.com 和某些 Unix 版本的 ksh 就已經發現問題了。廠商也紛紛推出了補救的 fix 檔,多可從他們 的網站下載。(日期為 1998 年 3 月 23 日的 command.com 是 Win 95 的 fix 檔之一)
產生應用程式的編譯軟體及其函式庫
大多數應用程式皆由編譯軟體 (compiler) 編譯成可以直接使用的執行檔。假如有關 編譯軟體所提供的 library function 或 routine 不能處理千年蟲問題,那麼所產生 的應用程式除非自行解決,否則就會連帶受到影響了。以微軟的 Visual Basic 來講, VB 3.0 的 library 是有問題的,而 VB 5.0 的 library 則沒問題。
應用程式本身的運算邏輯
這牽涉到程式設計者在編寫程式時是否有考慮千年蟲的問題。如果程式只以兩位數來 運算以及儲存日期資料的話,那這個程式就很有可能會受千年蟲影響了。
資料儲存的格式
儲存在資料庫 (如 dbf、mdb、...) 或試算表 (如 xls、wk1、...) 裡面的日期資料 的儲存格式,是否有將「世紀」的資訊也存進去呢?如果是以 short date 或其他 沒有「世紀」資訊的格式儲存,那麼使用它的應用程式如果無法辨認有關日期是屬於哪一個世紀的話,問題就來了...

各層次千年蟲危機的解決方法

層次 解決方案
Real Time Clock 可通過 Y2K Compliant BIOS 來解決。
BIOS 和 CMOS (治本) 更新 flash BIOS 程式或更換主機板。
(治標) 在 autoexec.bat 執行日期修正程式。
作業系統 從廠商處取得 fix/patch 補救或更換至新版本。
應用程式 修改程式或換用另一套沒問題的程式。
資料庫和試算表 修改程式加入適當判斷或想辦法 update 資料檔。

修正千年蟲危機的技術 重寫系統 (Rewrite)
有些比較老舊的系統可能會藉由整個重寫來解決問題,順便採用當前新的技術與 操作方式來取代舊的,如從 DOS 環境轉換至 Windows 環境。重寫系統往往比修補 舊系統更省錢、省時、省力。比較麻煩的工作是轉換舊系統使用中的龐大資料庫和 各項資料檔案以便能夠在新系統中延續使用。
擴充 (Expansion)
將原本只有兩位數的「年份」欄位擴充成四位數。此舉很可能需要更動資料檔案的 結構。
估算 (Windowing)
在程式中作出假設,某一年之後的年份當是前一個世紀的來處理,之前的就當是後一個世紀的來處理。比如說我們以 30 作為分界點,則如果日期中「年份」欄位 呈「50」,我們就當成是「1950」,如果是「25」,則當成是「2025」,因為 25 小過於 30。
減值 (Decrementing)
有沒有發覺我們的日曆每 28 年就會完完整整地重覆呢?也就是說,如果今天是星期一, 那麼 28 年前的今天也會是星期一。我們可以利用這個週期特性,在運算時將所有的 日期減 28 或 28 的倍數(如 56),運算完後再加回 28 即可。這個取巧方法已被證實是可行的,問題是一旦涉及日期運算就要轉來轉去,甚為麻煩。
2007-05-17 1:27 am
答得好,我都想問呢個問題,你答左,我唔使用分~~哈哈哈
2007-05-07 11:31 pm
兩千年問題

千禧蟲危機,又稱為千年蟲、2000年問題、Y2K問題等,是指由於電腦程序設計的一些問題,使得電腦在處理2000年1月1日以後的日期和時間時候,可能會出現不正確的操作,從而可能導致一些敏感的工業部門(比如電力,能源)和銀行,政府等部門在2000年1月1日零點工作停頓甚至是發生災難性的結果。

Y2K問題,或者Y2k問題是兩千年問題的一個通常叫法。其中Y表示「year」也就是年,而K則表示拉丁首碼「kilo」,表示1000。Y2K或者Y2k就是指2000年。

一般來講兩千年問題的發生是由於電腦程序中使用兩個數字來表示年份。這樣導致2000年被表示為「00」,而在它之前的1999年表示為「99」,這是不連續的。這樣將會導致某些程序在計算時得到不正確的結果。在嵌入式系統中可能存在同樣的問題,這有可能導致設備停止運轉或者發生更加災難性的後果。

但是不管怎麼樣,由於世界上各地的政府和企業都對兩千年問題給予了足夠的關注,1999年1月1日到2000年3月1日並沒有出現大範圍的電腦故障。


程序問題

兩千年問題始於20世紀60年代,當時電腦記憶體和外部存儲介質的成本很高,大多數數據處理需要藉助於用穿孔卡片,它用80行文本表示所儲存的數據。那個時候的程式語言,如COBOL和RPG,使用ASCII碼和EBCDIC編碼表示數據。如果用四位數字表示年份,就要多占用儲存器空間,就會使成本增加,因此為了節省存儲空間,電腦系統的編程人員採用兩位數字表示年份,隨著電腦技術的迅猛發展,雖然後來存儲器的價格降低了,但在電腦系統中使用兩位數字來表示年份的做法卻由於思維上的慣性勢力而被沿襲下來。對大多數程式設計師來講,他們並不認為所編寫的軟體會持續使用很多年。

具體來講,兩千年問題要解決的事項包括以下幾個要點:
● 軟體在特定的日期會否出現運作錯誤。要留意的日期包括以下幾個日子:
  ● 1999年1月1日
  ● 1999年4月9日(1999年的第99日)
  ● 1999年9月9日
  ● 1999年12月31日
  ● 2000年1月1日
  ● 2000年2月28日
  ● 2004年2月29日
● 軟體會不會利用特定的日期格式來表示檔案完結,或檔案已刪除。
● 軟體會否出現錯誤的日期,如「19100年」或「3000年」。

兩千年問題是由Bob Bemer在1958年第一次提出的。在其後的二十年裡,他用了很大的努力,希望政府、企業和國際組織(如IBM和ISO)來關注這個問題,但反響寥寥。直到2000年將要到來的時候,人們才感覺到兩千年問題的緊迫性。於是社會和政府都投入了大量的人力和物力來避免發生大規模的電腦災難。而從現在來看,這些努力也取得了相應的成果。


問題解決了嗎

解決兩千年問題不是一朝一夕的事情。有些程序可能會免在2000年出現閏日而強行修改計算日期的過程。這些程序如果繼續在將來的閏年使用的話,有可能會導致日期錯亂。所以,我們還不要對兩千年問題掉以輕心。

另一方面,對於其它使用其它曆法的地區,如臺灣的民國紀年或泰國的佛曆,類似問題也有可能在稍後年份出現。例如:民國100年就在2011年。如果所用的軟體沒有解決兩位年份的問題,那其實只是將兩千年問題從2000年推遲11年後再發生。

對於目前在世界上廣泛用作伺服器軟體的Unix系統來講,由於傳統的Unix系統使用32位的整型數表示日期(這個32位數字表示從1970年1月1日起至所存儲日期過去了多少秒),因此在2038年日期將會被卷回,類似於兩千年問題。時間將可能重新從1970年1月1日開始計算,這將可能引起世界範圍的電腦故障。這被稱為2038年問題。

此外仍然有一個更加有趣的問題:是否存在10000年問題。當然,在10000年時候世界、人類文明、甚至網際網路有可能不再存在。縱然這些都是可能性的問題,但無論如何,這條仍是個充滿意思的問題。

所以,兩千年問題的關鍵在於電腦日期存儲的格式:時間可能是無限,但你只能夠用有限的儲存空間表示時間。涉及到日期的運算又是非常常見的一種運算。如果要徹底的解決這一類問題,就必須在設計硬體或者軟體時候充分估計到你所設計的對象可能服務的時間。並且找到最合適的日期表示方法,從而避免在將來可能出現的問題。


千年蟲騙案

在2000年之前,香港有不少騙徒宣稱有千年蟲杜蟲藥,誘騙對千年蟲問題一知半解的民眾購買(有部分不熟悉電腦的市民以為千年蟲是一種類似瘟疫、傳染病等病毒),是當時候典型的街頭騙案,電視節目警訊亦不時提醒市民慎防騙局。

2007-05-07 15:33:33 補充:
千年蟲騙案千年蟲騙案是2000年前後在香港發生的騙案。騙徒利用一些市民對科技的無知,藉此進行行騙。2000年前後,全球非常關注千年蟲問題,當中的「蟲」(bug)只是指電腦軟體的失誤。但騙徒卻將其形容為一種真實的害蟲,藉此推鎖「可殺死千年蟲」的杜蟲藥。很多時候,騙徒更會聲稱貨品可以高價轉手,能夠賺取豐厚的差價。這是與另一種騙案寶藥黨有不少相似之處。在千年蟲問題被廣泛關注前,騙徒也用過其他科技術語行騙,例如推銷一些「能預防電腦病毒入侵人體」的藥物。事實上,所謂的「電腦病毒」只是具破壞力的電腦程式而已。參考資料:維基百科
參考: 維基百科


收錄日期: 2021-04-23 19:58:25
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20070506000051KK03653

檢視 Wayback Machine 備份