試着回答一下,不對的地方請大家指正。
==============================一句話解釋================================
因為計算機系統是基于數字電路的 ,而數字電路的功能就是執行“軟件”的邏輯(“軟件”的 0,1 在電路上則表現為高低電平),數字電路輸出高低電平,高低電平則驅動“硬件”的狀态(燈亮滅、馬達變速)。
===============================不詳細解釋===============================
(涉及的内容太多了,每個部分都有厚厚的一本書和課程對應,所以隻能大概粗略描述一下)
人類可以看懂的高級程序語言(以C++為例)先經過編譯器()編譯,再經過鍊接器()鍊接,最終的結果就是機器碼,也就是一串0,1的組合。機器碼是給CPU看的,普通人類基本是無法看懂的。這一部分隻涉及題主說的“軟件”。(大學課程:C++程序設計)前一步生成的結果(機器碼)保存在了硬盤上的某個磁道,當我們運行程序時,也就是先把硬盤上的數據讀入到内存當中,然後内存中的數據再讀入CPU的緩存(Cache)當中,供其操作。一般來說,除了單片機,大小機器都會有個操作系統來負責這事,這一步仍然隻涉及題主說的“軟件”。(大學課程:計算機操作系統)然後CPU中的ALU按照時鐘順序讀取指令和數據,進行最基本的操作,即加減法、邏輯運算、自增自減、移位等。因為現在的計算機系統都是 數字的,CPU也不例外,它其實就是一個專用集成電路(ASIC)。“軟件”在邏輯上表現為 1, 0;在電路(内存、Cache)中表現為高低電平。CPU在讀入“軟件”、處理、輸出“軟件”的整個過程在邏輯上是“軟件”操作,在電路上則是高低電平的變化。CPU和外面的設備(内存、顯卡、聲卡、鼠标等)打交道都是通過電平(高低)來處理。在這一步,不僅僅涉及題主所說的“軟件”了,也包含了硬件電路的内容,應該就是題主說的“結合部分吧”。(大學課程:微機原理)如果題主仍然對 CPU 如何把“軟件”變為“硬件”有疑問or興趣,可以看看CPU設計和數字電路設計方面的書,不考慮細節的地方,CPU的原理其實也不是很難,很多微機原理的書都是以古董級别的8086, ARM作為例子,介紹CPU的相關知識,甚至還有教你制作CPU的書:如何自制一個CPU。這一步隻包含”硬件“了。(大學課程:數字電路設計基礎)如果題主對數字電路的高低電平如何驅動硬件(晶體管的亮滅)有疑問,可以看看模拟電子電路的相關書籍。這一步隻包含”硬件“了。(大學課程:模拟電子電路基礎)
P.S.
其實前面已經有人說的非常好了(我又廢話了這麼長 =.=), 所謂“軟件”或者“程序”,最早它的載體是打孔紙帶,邏輯上的 0,1 用有沒有孔來表示,機器根據有沒有孔來控制“硬件”的行為。後來随着電子電路技術的發展,經曆真空管、電子管、變成現在的晶體管和集成電路IC,邏輯上的 0,1 變成了電平的高低。電平驅動硬件,僅此而已。
================================分割線=================================
最後推薦兩本書,第一本不廢話了,計算機經典書籍,程序猿的必看。第二本是大牛 寫的科普書,号稱 “完全0基礎的人也可以看懂”,教你用最基本的導線、繼電器搭建一個非嚴格意義上的計算機,至少它和現在的計算機原理是一緻的。
1.
深入理解計算機系統 (豆瓣)
(CSAPP)
本書是一本将計算機軟件和硬件理論結合講述的經典教程,内容覆蓋計算機導論、體系結構和處理器設計等多門課程。本書的最大優點是為程序員描述計算機系統的實現細節,通過描述程序是如何映射到系統上,以及程序是如何執行的,使讀者更好地理解程序的行為為什麼是這樣的,以及造成效率低下的原因。
2.
編碼 (豆瓣)
(code)
本書講述的是計算機工作原理。作者用豐富的想象和清晰的筆墨将看似繁雜的理論闡述得通俗易懂,你絲毫不會感到枯燥和生硬。更重要的是,你會因此而獲得對計算機工作原理較深刻的理解。這種理解不是抽象層面上的,而是具有一定深度的。
有話要說...