在初步了解计算机的“大脑核心“CPU之后,对于计算机是如何处理数据、指令、函数的流程有了大致的逻辑认知。在阅读过有关二进制的知识后,对于计算机构成和运行有了更深的了解,主要分为对于二进制的运算和用途的思考。
首先,作为计算机核心的CPU同其他计算机组件一样,都属于IC集成电路的一种,在之前我对于计算机32位还是64位这个区分并不是很了解,但在阅读CPU知识和二进制知识后,认识了位和字节的概念,并且能够找到他们二者的联系。这就跟上文所提到的IC电子部件有关,正如书中所说,IC这些电子部件通过引脚镶嵌在电路板上,而IC两侧的引脚通过不同的电压反应不同的状态,就与二进制010111……这种只有两种状态的二进制类似,因此计算机就采用了位作为运行的最小单位,并且采用字节作为计算机记录信息的最小单位,因此位与字节之间也有着关系,再者就是计算机的位单位也是二进制中的一位,电脑处理二进制数的位数一般位8的倍数,因此1字节=8位。到这里,我对于32位还是64位有了明确的认识,即能够一次处理多少字节的数据。
对于二进制数还包括了其特有的运算法则,进制之间的转换……这些知识点的基础就是二进制中“如果数字小于字节数时需要往高位上补0”。在这一点的基础上我相继认识了移位运算、负数补数的表示与转化和逻辑运算。首先是移位运算,在这一个知识点中,对于二进制的运算有了一个新的认知,二进制不单单停留在数字意义上的运算,还包括图形方面。在位移运算中又有很多的运算法则例如在左移位运算中“空位补0,溢出舍弃”的思想与<<或>>表示左移位符号<<或>>后所跟的数值则是移位的位数这个运算法则,如果结合图形则需要将0和1看作两块不同颜色的方块,左移后空白部分补上0所对应的颜色,就如同书中所说的“霓虹灯”一般流转传递,而右移位就会产生一个问题,高位缺失补1还是0?这就跟是逻辑移位还是算数移位有关联,首先在二进制运算之中,通常用加的思想去进行运算,1-1可以看作是1+(-1),这时就出现了负数这个概念,负数在二进制表示中是由正数进行“取反+1”这一步操作,也叫求补数(正数表示负数),例如1的二进制数是00000001,那-1就是11111111。两相相加,遇二进一,溢满舍弃就是0也就是00000000。而在算数右移位中1表示负数,0表示正数,当最高位空缺时根据二进制数值进行判断补1或者0。而在逻辑右移位时,当二进制数值表示的是图形而并非数值的情况下就要在最高位补0。这是关于二进制算数运算的相关知识。而逻辑运算相当于JAVA中的逻辑运算符,0和1在这里可以看作Boolean型变量true和false。逻辑运算分为很多种,例如“逻辑与”相当于“&”,是指两边同为1时结果为1,其余情况结果为0;“逻辑或”同“I”一样,只要两边中其中一边有1,结果就为1;至于“逻辑非”就相当于“!”,就是将0变成1,1变成0的取反。这是与JAVA逻辑运算符相似的地方,当然剩余逻辑异或,则需要额外记忆,逻辑异或是指排斥相同数值的运算,只有两方是1和0结果才为1,剩余都是0。
通过这些算数运算和逻辑运算法则,结合对于CPU的认识,二进制在CPU的运行中既将数据进行处理运算,同时也如同信号一样,0和1都代表相反的信号,来告诉计算机下一步的执行顺序,如此来参与到计算机的运行之中。