前言
很多人的编程能力或许很强,但是却“知其然而不知其所以然”,今天要给大家讲的是“数据的运算”,让我们可以更好的理解数据在计算机是如何存储以及运算的。
一,数据在哪里运算
现代的计算机都是根据冯诺依曼模型设计的,此模型着眼于计算机的内部构造,认为计算机主要有五大子系统组成:输入设备,输出设备,存储器,控制单元,算术逻辑单元。
数据的运算在CPU(寄存器中),高速缓冲区,主内存中都可以完成。
运行速度排序为:CPU>高速缓冲区>主存储器。
速度快的CPU价格昂贵,价格便宜的主存储器运算速度是相对较慢的。为了使计算机更有性价比,计算机通常配置了三种不同层次的存储器。
如图所示:
二,运算的分类
运算分为两大类:算数运算和逻辑运算。
今天主要给大家讲述逻辑运算。
逻辑运算分为两种:一元运算和二元运算。
如果定义了一个位作为逻辑运算的值,那么就可以进行逻辑运算了。逻辑运算通常会输入1-2个位,生成一个为。如果输入的是一个位,就称其为一元运算,如果是两个位,就称其为二元运算。
我们主要讲与,或,异或这三种二元运算,它们的运算符号分别是&,|,^
1,AND
我们通常用&这个操作符对数的每一位进行与逻辑运算,若两个补码中对应位的逻辑值均为1,则运算结果为1,若有其中一位为0,则运算的结果为零。
举个栗子:
2,OR
我们用"|"这个操作符对数据反码的对应位进行或逻辑运算,当且仅当对应位都为零时,输出结果为0,否则为1。
举个例子:
用图直观表示为:
3,XOR
异或的运行规则是当且仅当输入对应位相同时输出0,否则,输出1。

三,逻辑运算的应用
掩码
上述三种逻辑运算可以用于修改位模式,可将指定的位复位,置位,反转,但是实现对位模式的修改还必须使与,或,异或的逻辑运算搭配其他的位模式使用,这个所谓其他的位模式就是掩码。
AND
应用:使指定位复位。
1,在目标位模式需要置零的位,掩码相应位设为零。
2,在目标位模式需要保持不变的位,掩码相应位设为1。
例如,现在假设要将目标位从左往右数的五个位全都清除,那么设计的掩码就是左五位都为零。
使用一个掩码复位目标数的最后五位,怎么用逻辑运算实现呢?
OR
功能:指定位置位
1,目标位需置1,对应掩码位设为1。
2,目标位需保持不变,掩码的位置设为0。
例如,假设要把目标的最后五位置位1,其余位不变,那么掩码的最后五位就设为1,其余位设为0.
在电厂里,如何应用掩码把6号泵头打开。
XOR
使指定位反转。
1,目标位需要反转,掩码对应位设为1.
2,目标位保持不变,掩码对应位设为0.
例如,反转目标位最后五位。
实际操作一下,用掩码反转目标数的最后五位。
练习
你学会了吗?
来,做一道题测试一下。
test:
如果一个数的二进制从右向左的第3位为0,则变成1;再将结果变回原数。(答案在下期揭晓)
总结
逻辑运算学起来,好像还挺简单,但是要用它们来对位模式进行指定的修改,有时候就不那么容易了,下去后还是要多加练习。