试着回答一下,不对的地方请大家指正。
==============================一句话解释================================
因为计算机系统是基于数字电路的 ,而数字电路的功能就是执行“软件”的逻辑(“软件”的 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)
本书讲述的是计算机工作原理。作者用丰富的想象和清晰的笔墨将看似繁杂的理论阐述得通俗易懂,你丝毫不会感到枯燥和生硬。更重要的是,你会因此而获得对计算机工作原理较深刻的理解。这种理解不是抽象层面上的,而是具有一定深度的。
有话要说...