電腦會有計算錯的時候嗎?

比如明明電腦有這個文件的,但是搜索出來卻顯示搜索不到?


謝邀

題主提的問題牽扯到軟體方面我是不懂了,只說一點我了解的

從硬體的層面,錯誤是有可能出現的。數字信號傳輸的是0和1,那如果本來輸出端我要傳輸1,到了輸入端卻接收到了0,就出現錯誤了,反之亦然。

比較典型的可能出現這種錯誤的情況

1. EMS。

EMS(Electro
Magnetic
Susceptibility)直譯是「電磁敏感度」。其意是指由於電磁能量造成性能下降的容易程度。為通俗易懂,我們將電子設備比喻為人,將電磁能量比
做感冒病毒,敏感度就是是否易患感冒。如果不易患感冒,說明免疫力強,也就是英語單詞Immunity,即抗電磁干擾性強。

產品的EMS不達標,就可能由於外界的電磁干擾影響到設備自身的信號傳輸,出現信號的錯誤。不恰當的例子,就好像變壓器的兩個線圈一樣,我要在這個線圈上傳輸信號,你在旁邊的線圈上通了交流電,於是我這邊的線圈上信號全都亂掉了。

2. 振鈴。由於PCB走線上的阻抗不匹配等原因,就可能導致過沖(overshoot),下沖(undershoot)和隨之而來的振鈴(ring)。過衝下沖可能直接損壞器件,振鈴則有可能導致邏輯錯誤,1變0,0變1啥的。

這種是說硬體上可能出現的錯誤,但是從硬體到題主說的系統中間隔了好多好多,也有校驗和糾錯(比如伺服器使用內存都會選擇帶ECC的),最終是否有可能會表現出題主描述的那種現象,我就不知道啦。


有可能偶然發生位翻轉錯誤。

通常的PC機都不矯正這種問題,那麼一旦發生在程序區域,就八成會崩。伺服器的CPU和內存通常有額外的校驗位,可以有一定的容錯度。


概率上說,會。

比如宇宙射線照射到你計算機的CPU了;比如你計算機的旁邊有顆核彈爆炸了CPU收到了輻射......

當然,在正常情況下,硬體上也會有很低很低的概率出錯,比如原本應該是高電位變成了低電位。

不過這個概率是非常非常低的。

其次,題主聽說過校驗碼么?

校驗的方式有很多種:奇偶校驗、冗餘校驗等等。這裡舉個最簡單的例子-----奇偶校驗

比如CPU要發送給一個邏輯單元11101。

在發送前,CPU會這樣處理:

1)讓各個位上的二進位相加:1+1+1+0+1 = 4 結果是個偶數

2)規定0是偶數1是奇數

3)添加校驗碼:由於上面的結果是4,即偶數,所以在原始信息前面加一個0。所以發送的最終信息為:011101。

在邏輯單元接受到數據後,可以逆向做一次,來看結果是否吻合。如果不吻合,就說明有錯位發生。這時邏輯單元就會向CPU發出一個請求,讓CPU再發一次。

當然,這種校驗方式很簡單,無法檢驗出兩個錯位同時發生的情況。但是,兩個錯位同時發生的概率很低很低,而且我們還有其他校驗方式可用。

各種校驗方式都用上,就足以把出錯的概率降低到非常非常非常非常非常低的水平了。

在計算機這種比較複雜的機器上,你想碰到一次讓用戶能看到的錯,基本不可能,因為系統本身已經可以檢測出各種硬體錯誤了。比如你說的:本來文件存在但是搜索不到。我可以說這是絕對不可能發生的。如果你了解到系統如何管理計算機的文件,你就知道我為什麼敢說「絕對不可能」了。

在一些小型機器上,比如電視遙控器、商店的列印小票的機器上,你或許能碰到出錯的可能,但概率也是非常非常非常非常低的。


其實大家似乎沒發現,題主這問題,很明顯是混淆了兩個概念:運算錯誤bug。標題說的是前者,而正文說的是後者。

雖然從廣義上來說,bug也會導致運算錯誤(例如說cpu的micro code的bug---這事雖然概率很低,但是我好像記得曾經有過),所以也可以算進去。但是狹義的說,運算錯誤一般僅指物理上,晶元或者其他物理設備的錯誤:一般常見的是 @Xi Yang 和 @可知不可知 回答中所說的那種情況。另外,在做嵌入式開發時,某些手工焊的開發板的虛焊、鬆脫或者接地懸空等,也有可能會出現類似的情況。

而bug,一般都是軟體系統在設計或者實現時,各種異常情況考慮不周而導致的。這種情況下,所有步驟的運算都是正確的,只是最終結果不是開發者或者使用者所期望的而已。

再舉個簡單的例子來說明兩者的區別:

運算錯不錯,就好比一把槍和子彈打得準不準。

而軟體有沒有bug,就好比用那把槍有沒有打中目標。


正常。

在一個軟體的整個計算過程中,會有多個環節都可能影響到結果。比如它需要的索引是否正確


瀉藥。計算機當然有出錯的情況。從概率上來說出錯幾率從大到小的情況有:

  • 程序員BUG:計算機操作都是使用程序員寫的程序看到的效果。程序員出錯那麼計算機就出錯。
  • 使用錯誤:用戶沒有找對正確的使用方法。
  • 軟體不提供此功能:軟體其實沒有這個能力。
  • 軟體間的相互影響:其他軟體出現的錯誤影響了你現在是用的軟體導致功能不正常。
  • 硬體錯誤:硬體出了問題導致軟體功能不正常。

比如明明電腦有這個文件的,但是搜索出來卻顯示搜索不到?

這種情況可能原因最大就是 程序員BUG,使用錯誤,軟體不提供此功能其中之一


有幾種情況

一個是有些演算法是模糊計算,比如很多搜索引擎,它是可以保證比如99%的精確度,但有1%的概率漏數據或者搜索不到。犧牲精確度的原因是為了獲取幾何級數的性能提升。

然後例如JPEG和MP3之類的壓縮也是有損的,也就是說你壓縮之後恢復出來,和原圖會不一樣。同樣,原因也是因為用有損換取了存儲空間的大幅降低。

之後還有一種是精度問題。比如某些機器某些語言的編譯器里,你算 3 / 9 * 9 結果不一定是3,而是2.99999(忘了是不是這幾個數了,但是是可能的)。

原因是因為,計算機存儲數據的時候精度是有限的——可以近似理解為計算機只存儲16位小數(位數根據CPU的位數和數據類型而不同),所以如果16位以後的小數會影響計算結果,那麼你計算的結果就會有錯誤。

然後因為計算機存儲的是二進位,所以對於十進位沒有問題的計算,二進位下依然可能出問題。不過現在很多編譯器針對這方面有很多優化。

最後當然就是硬體問題了——強磁場或者物理缺陷導致某一個電位的高低電壓不正確的時候,整個計算過程當然也就不對了。


在輸入有誤的情況下


以前用同事電腦,一個是xp的,如果文件是abc.doc 搜索bc可以搜索到,而win7似乎搜索不到。對這個我也是偶然發現的。確實是錯誤的程序。


會,因為在浮點環境下討論的話,計算機連0.2都不能準確的表述。


你這題目和題目補充毫不相關啊,邏輯在哪?


以下是個人理解。


那是程序員的問題。

電腦本身就是電路,一個通路一個閉路的組合而來。


94年奔騰處理器有過Pentium FDIV bug https://zh.m.wikipedia.org/wiki/Pentium_FDIV_bug


不看題目

直接回答問題

你是不是忘了開文件索引了

:D


@可知可不知 說的是計算機底層的原理,從純計算的角度來說的,但實際上,由於高層的程序業務處理、程序員的失誤等原因,會導致電腦用起來有問題,表現為有Bug。比如Win10剛出的時候,很多Bug,出錯,非常難用,但這並不是計算機底層計算出錯了,而是軟體本身的問題。

題主所說的,文件明明存在,卻搜索不出來,是有可能的。

如果這是題主親自碰到的問題,可以嘗試換個搜索程序,比如Everything。


推薦閱讀:

是不是軟體越升級就越占內存和CPU?為什麼?
大學的專業分好壞么?
美本學生考慮申研,生物專業帶cs的certificate,選純CS還是bioinformatics呢?
哈爾濱工程大學 (計算機科學與技術),與吉林大學 (軟體工程) 的選擇?
為什麼大學計算機專業四年不以製作一個操作系統來進行教學?

TAG:計算機 | 計算機科學 | 計算機專業 | 計算機演算法設計 | 理論計算機科學 |