对于我所寻找的信息,我感到有些惊讶,回过头看,我猜这个帖子的标题并不完全适合OP所问的问题。
你们都说“机器码是一堆数字”。
当然,“CODE”就是一堆数字,但人们想知道的是(我猜) “实际上发生了什么?”
在编程方面,我只是一个新手,但我足够理解并且很自信可以“粗略地”回答这个问题。
对于实际电路来说,机器码不是数字或值。
机器码是一堆电压门,它们要么打开要么关闭,根据它们连接的内容,某种灯在某个特定时间会闪动等等。
我猜“机器码”规定了特定电信号的路径和时间,以达到其整体目标。
因此,对于010101,3个电压门是关闭的(0),3个是打开的(1)。
我知道我接近正确的答案,但我也知道它要复杂得多——因为我能想象我不知道的东西。
010101 对于一个简单电路来说是易于理解的指令,但我无法开始理解复杂电脑是如何处理所有信息的。
所以我想我们来分解一下?
x位处理器告诉我们处理器可以同时处理多少位。
一个比特要么是1,要么是0, "开"或 "关"
因此,32位处理器可以同时处理这么多位,“10101010 10101010 10101010 10101010”。
处理器是“集成电路”,就像一个紧凑的电路板,包含电阻器/电容器/晶体管和一些内存。我不确定处理器是否有电阻器,但我知道通常会在电路板上实际处理器周围找到很多电阻器。
无论如何,晶体管是一个开关,所以如果它接收到1,它会向一个方向发送电流,如果它接收到0,它会向另一个方向发送电流...(或者类似于这样)
因此,我想像对于机器码来说...处理器接收到的代码段会改变电压通道,从而向计算机的另一部分发送信号(为什么你认为处理器有那么多引脚?),可能是更专门用于特定任务的另一个集成电路。然后该集成电路接收到一块代码,例如2到4位的01或1100之类的代码,进一步定义了信号最终目的地的位置,可能直接返回到处理器,或者可能发往某些输出设备。
机器码是将电路连接到灯泡并进行切换的非常有效的方法,然后将该灯泡从电路中取出并将电路切换到不同的灯泡中。
计算机中的存储器非常必要,否则要使计算机执行任何任务,您需要逐个输入所有信息(以机器码的形式)。相反,所有的1和0都存储在某个存储设备中,可以是带有磁头针的旋转硬盘,根据磁盘的电荷来“读取”1或0,也可以是使用一系列晶体管的闪存器件,发送电压会引出1和0(我不完全了解闪存如何工作)。
幸运的是,有人想出了一种不同的编程基数系统(十六进制),以及将这些数字(翻译)编译回二进制的方法。然后所有软件程序都从那里衍生而来。
键盘上的每个键创建一个特定的二进制信号,将一些开关打开或关闭,并使用特定的电压,以便在屏幕上的特定单个像素上运行电流,从而创建"1"或"0"或"F"或本帖子中的所有字符。
因此,我想知道,程序如何“编程”,或者说如何让计算机“执行”某些操作...或者说编译器如何编译与二进制不同的代码程序呢?
由于我现在非常疲惫(所以不会尝试),而且几乎所有在计算机上进行的操作都是由某些程序完成的,因此现在很难思考。任务管理器中有正在运行的程序(进程)。它们使您的计算机屏幕保持您习惯的外观,并允许屏幕像对待真实物体一样被操纵。(它们并不是真实物体,只是图片,甚至您的鼠标指针也是如此)。
(好了,我结束了。已经足够编辑和延长我的思路,该睡觉了)
另外,我真正无法理解的是计算机是如何“读取”0的。
似乎“0”不能是“缺少电压”,而必须是其他类型的信号,
其中1伏特= 1,0.5伏特= 0。电路中电流之间的可区分差异仍将发送信号,但可能是打开和关闭特定电路之间的差异。
如果我在任何方面接近正确,那么向全世界的计算机工程师致敬,其复杂性令人垂涎欲滴。我希望有一天能够了解科技的方方面面。现在,我只是试图学习Arduino。
最后......我一直在想的是......今天的计算机是否可能在没有另一台计算机的帮助下进行编程?