我热爱的编程-该从何讲起呢-2

in #cn5 years ago (edited)

书接上文,通过对加法器结构的构思,使得我对逻辑的理解更深一步,当严格的“是”与“否”可以用来表达数字的累加,便使得计算机做四则运算成为了可能,减法就是加上一个负数,乘法是加法的重复,而除法是减法的重复,例如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计算后返回数据到游戏,游戏程序接收数据后计算,将数据写入显存,在显示器上玩家将看到键盘点击后的结果。依旧如此简单。

请忘掉那些英文的名词,更要彻底的无视如垃圾般的翻译后的不知所云的名词,那些名词只会影响对计算机真正的理解,走更多弯路后,钻入一个牛角尖便再无进步的可能。

Sort:  

Congratulations @geyu! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You made more than 1750 upvotes. Your next target is to reach 2000 upvotes.

Click here to view your Board
If you no longer want to receive notifications, reply to this comment with the word STOP

Support SteemitBoard's project! Vote for its witness and get one more award!