計算機最底層的機器語言是如何變成物理電平信號輸給CPU的呢?
01-15
查閱了不少書,最近對計算機的底層結構正在努力探索中。
一個高級語言可以被編譯器編譯到底層的機器語言,也是 0 ,1 構成的機器語言,大部分書表示這就是計算機唯一能讀懂的語言。。但一事我一直沒想明白,編譯器完成編譯工作後,CPU其實只吃物理電平的信號不是嗎?。。這些0001100101010的機器碼。。是如何變成物理的電壓信號的呢??請問有大神知道嗎?非常感謝
補充: 一段存在物理磁碟里的命令,1, 如何激發出一個高電壓的物理電平。。顯然,你關機,數據還存在你的硬碟里,只有你開機,機器才會去讀到這個數據,產生相應的電平,有人明白這是怎麼做到的嗎?
高電平過來然後執行與門,就把數據讀過去了。
64個高電平,就是0xffffffffffffffff,與某內存64位數據與,執行完之後電平就變成內存中的64位數據一樣了。
問題太過寬泛,涉及的知識要點較多,確實不好回答。
首先學過數字電路的都是知道,所謂 0,和 1 ,在數字電路中即是翻譯成了對應針腳的低或者高邏輯電平。一個序列的 0 和 1 即可類推到一組針腳上的低或者高邏輯電平。簡而言之計算機壓根就不知道什麼 0 或者 1 ,所謂 0 和 1 是我們人為規定的,超過一定電平就認定為 1 ,否則為 0 ,它從來就只知道電平高低,即不存在什麼「變成物理的電壓信號」。附圖為常見的 USB 介面針腳定義,圖片來自網路:題主還問到有關存在硬碟里的數據是怎麼變成高低邏輯電平的,這個實際上實現起來相對簡單:當磁頭經過碟片上方的時候,會記錄到磁場的相應變化,即可根據這個變化產生一個序列的高低電平,隨後存進內存或者別的地方。
如果問得是計算機啟動到開始接受用戶數據輸入狀態的一系列過程,這個屬於計算機組成原理的內容,可以自己查找相應資料。請看數電那本書去
垃圾知乎, 不玩了
推薦閱讀:
※Ingress 中的 passcode 有哪些解碼技巧?
※如何解決python不支持中文路徑的問題?
※GB2312及其擴展標準和Unicode之間有什麼區別和優劣勢?
※字元編碼是否是軟體工程中最噁心的問題?
※程序在處理文本的時候如何區分 [ANSI] 和 [無BOM的UTF8] 這兩種編碼?