軟件的本質是代碼和數據,代碼和數據最終都是以二進制的形式存儲,二進制就是01011101101001010這種數字串,為什么二進制串就能控制硬件呢?
看了知乎的一個答案我也有了自己的一點想法。
其實一直就沒有二進制這種東西,機器也不知道二進制這種東西,它也識別不了,機器只能“識別”電壓的高低,高電壓的時候某個開關開了或者關了,低電壓的時候另外一個開關開了或者關了,這就導致某個燈亮了,某個燈滅了,把電腦的顯示器想象為很多個LED燈,最終呈現出來的效果可能就是屏幕上出現了一個字,一個動畫。我們按一下鍵盤或者點擊一下鼠標,實際上是給機器發出了一串電壓信號。硬盤里面存儲的一部電影,存儲的其實不是二進制,而是電壓信號,因為內存里面有鎖存器這種東西,意思貌似是可以讓某個存儲單元固定在某個電壓值。總之,我們輸入的是電壓,機器處理的也是電壓,輸出的也是電壓,沒有二進制的事情。
那為什么很多人都說機器能識別二進制呢? 我個人覺得二進制這種東西是一種理論,用來認識機器理解機器提出的一種理論,這就像是我們用科學來解釋世界一樣。
你說你今天編寫了一個程序,並把它保存在硬盤中,其實你是把一堆電壓值保存在了硬盤中,運行的時候,其實是把硬盤中的那一堆電壓值拷貝到內存中,然后內存中就有了一堆電壓值,
CPU讀取到了一堆電壓值,然后解碼這堆電壓值(即:某某電壓值該干什么事情),輸出結果也是一堆電壓值,顯示器獲得了這群電壓值,然后顯示器根據這群電壓值改變LED燈的狀態,如果你就看到效果了。
