我热爱的编程-该从何讲起呢-2
书接上文,通过对加法器结构的构思,使得我对逻辑的理解更深一步,当严格的“是”与“否”可以用来表达数字的累加,便使得计算机做四则运算成为了可能,减法就是加上一个负数,乘法是加法的重复,而除法是减法的重复,例如7除2,由7减去2重复3次,当余数不足2,则除法计算结束,重复的3次作为根,1作为余数。
其中又引出了三个问题:
1.如何表示负数。
2.如何重复。
3.如何判断两数的大小。
##负数
通常被表示成补码,在此不做展开,总之不但能表达,而且符合数理。
##重复
重复的判断由cpu的标志寄存器来帮助判断,当条件符合,则相应的寄存器内容变为1。依然不用理解,只需要知道这是很简单而明确的事即可。
##大小
大小的判断可以根据比较电路的高位的位置得到,比如二进制的1011与1001两数相比,最高位同为1则继续比较第二高位,发现都是0则继续比较第三高位,1011的第三位为1,而1001的第三位为0,所以1011较大,比较结果存在相应的标志寄存器中,供cpu读取。
看来我们又解决了一个小问题,再深入一点点,1011与1001两个数在cpu运算时应该有一个电路能够存储,当然在运算时,它们都是在cpu的电路中,这显而易见。
那么,在运算前,cpu应该从何处拿到这两个数呢?
我们必须有个存储数据的地方,如果了解的多会知道cpu自带的寄存器能够存储,内存与硬盘也是能够存储数据的地方,我们何不把它们归为一类,统统叫它们存储器。
好了,cup需要运算时,从存储器取得数据,运算后,把结果存入存储器,这个流程显而易见。
计算机其实就是这么个玩意。
可是有人问了,我用的计算机很复杂,还有显示器、键盘、鼠标、蓝牙什么的,你这个是闹着玩的吧。
当然,计算机之复杂无需多言,只是计算机从抽象上说就是上面那个玩意,在这个基础上不断的复制这个逻辑,便延伸了计算机的能力,例如将数据写入显卡的显存将驱动显示器显示图像,例如键盘传入数据到cpu,cpu计算后返回数据到游戏,游戏程序接收数据后计算,将数据写入显存,在显示器上玩家将看到键盘点击后的结果。依旧如此简单。
请忘掉那些英文的名词,更要彻底的无视如垃圾般的翻译后的不知所云的名词,那些名词只会影响对计算机真正的理解,走更多弯路后,钻入一个牛角尖便再无进步的可能。
Congratulations @geyu! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :
Click here to view your Board
If you no longer want to receive notifications, reply to this comment with the word
STOP