简单理解单片机C语言(三)持续更新中
前面重点讲了什么是二进制,接下来我们重点讲一下二进制之间的运算,这个运算在单片机编程过程中是经常用到的,所以还是有必要详细讲一下。与运算:符号为。
举个例子:010;100;000;111;大家可以很明显发现一个规律,只要公式中有0,那么结果肯定就是0,必须同为1,运算的结果才是1。
那么我们变化一下,如0B00110B1100结果是多少?是不是就是0?如果把0B0011和0B1100写成十六进制,就是0x030xC00。所以十六进制之间与运算,我们可以先把十六制的数,先变成二进制,再每一位进行与运算。
举个例子:0x910x08?先转换为0B100100010B00001000;再每一位进行与运算,结果就是0B00000000;所以0x910x080;
或运算:符号为。
举个例子:011;101;000;111;大家可以很明显发现一个规律,只要公式中有1,那么结果肯定就是1,必须同为0,运算的结果才是0。
举个例子:0x910x08?先转换为0B100100010B00001000;再每一位进行或运算,结果就是0B10011001;所以0x910x080x99;
异或运算:符号为。
举个例子:011;101;000;110;大家可以很明显发现一个规律,只要公式中存在0和1时,那么结果肯定就是1,必须同为0或同为1时,运算的结果才是0。
举个例子:0x910x08?先转换为0B100100010B00001000;再每一位进行或运算,结果就是0B10011001;所以0x910x080x99;
讲了这么多二进制之间的运算,在实际项目开发过程中会有哪些应用?这里先给大家举一个简单的例子说一下,后期实物演练再来看看运算的应用。
例子:假设有这么一个需求,一台设备在运行时需要亮绿灯,暂停时亮黄灯,停止时亮红灯。那么我需要先记录一下设备的状态。我们还是用二进制来记录,定义一个变量state(不知道什么是变量可以先看关于变量文章)。0B001表示运行,0B010表示暂停,0B100表示停止。接下来我现在需要进行打开对应指示灯。我们只需要p10state0x01;p11state0x02;p12state0x40。(p10、p11、p12为单片机IO)
对于初学者来说如果上面这个例子不理解没关系,慢慢一步步来。
简单理解单片机C语言,持续更新中。。。。。。