計算機最底層的機器語言是如何變成物理電平信號輸給CPU的呢?

查閱了不少書,最近對計算機的底層結構正在努力探索中。

一個高級語言可以被編譯器編譯到底層的機器語言,也是 0 ,1 構成的機器語言,大部分書表示這就是計算機唯一能讀懂的語言。。但一事我一直沒想明白,編譯器完成編譯工作後,CPU其實只吃物理電平的信號不是嗎?。。這些0001100101010的機器碼。。是如何變成物理的電壓信號的呢??

請問有大神知道嗎?非常感謝

補充: 一段存在物理磁碟里的命令,1, 如何激發出一個高電壓的物理電平。。顯然,你關機,數據還存在你的硬碟里,只有你開機,機器才會去讀到這個數據,產生相應的電平,有人明白這是怎麼做到的嗎?


高電平過來然後執行與門,就把數據讀過去了。

64個高電平,就是0xffffffffffffffff,與某內存64位數據與,執行完之後電平就變成內存中的64位數據一樣了。


問題太過寬泛,涉及的知識要點較多,確實不好回答。

首先學過數字電路的都是知道,所謂 0,和 1 ,在數字電路中即是翻譯成了對應針腳的低或者高邏輯電平。一個序列的 0 和 1 即可類推到一組針腳上的低或者高邏輯電平。簡而言之計算機壓根就不知道什麼 0 或者 1 ,所謂 0 和 1 是我們人為規定的,超過一定電平就認定為 1 ,否則為 0 ,它從來就只知道電平高低,即不存在什麼「變成物理的電壓信號」。

附圖為常見的 USB 介面針腳定義,圖片來自網路:

可以顯然的看到除了 Vc 和 GND 之外,數據傳輸靠 D+ D- 上的電平快速變化來完成。但由於 D+ D- 只有一組,一次就只能傳一位數據,所以 USB 全稱叫通用串列匯流排。能傳多位的當然就叫並行傳輸了。

題主還問到有關存在硬碟里的數據是怎麼變成高低邏輯電平的,這個實際上實現起來相對簡單:當磁頭經過碟片上方的時候,會記錄到磁場的相應變化,即可根據這個變化產生一個序列的高低電平,隨後存進內存或者別的地方。

如果問得是計算機啟動到開始接受用戶數據輸入狀態的一系列過程,這個屬於計算機組成原理的內容,可以自己查找相應資料。


請看數電那本書去


垃圾知乎, 不玩了


推薦閱讀:

Ingress 中的 passcode 有哪些解碼技巧?
如何解決python不支持中文路徑的問題?
GB2312及其擴展標準和Unicode之間有什麼區別和優劣勢?
字元編碼是否是軟體工程中最噁心的問題?
程序在處理文本的時候如何區分 [ANSI] 和 [無BOM的UTF8] 這兩種編碼?

TAG:計算機 | 計算機科學 | 晶元集成電路 | 編碼 | 編譯 |