1 基本概念
1.1异或定义和符号
异或,英文为exclusive OR,缩写成xor。在计算机语言中是一种二进制位运算符,通常写为^。
1.2异或的运算规则
通常来说,在bit位上,
即相同的两个数异或结果为0,两个数不同异或结果为1。任何二进制数与0异或,结果都是其本身。
1^1 =0
0^0=0
1^0=1
1.3异或的运算性质
(1)交换律: a^b = b^a
(2) 结合律: (a^b)^c = a^(b^c)
2异或的应用
2.1使特定位进行0或1的翻转
例如对01001100的第一位和第二位进行翻转,可以将该数与00000011进行异或操作。
01001100^00000011 = 01001111
在嵌入式学习中,GPIO输入端对按键进行操作,通过小灯的闪烁与否,检验按键功能是否设置完好。
#define LED_G_TOGGLE {LED_G_GPIO_PORT->ODR ^= LED_G_GPIO_PIN;}
上述,定义了一个宏,直接通过GPIO口对ODR寄存器进行操作,异或PIN的地址,实现ODR寄存器相应位上0和1的翻装。实现了高低电频的切换。
2.2变量交换
例如交换两个整数 a = 2 b=3,可通过异或的方法进行交换,不必使用临时变量
int a = 2;
int b = 3;
a = a ^ b
b = a ^ b
a = a ^ b
2.3 在汇编语言中将变量置0
例如:xor a,a
2.4 判断两个数是否相等
将两个数异或,若结果为0,则相等。
总结下就是在STM32中,要么直接对寄存器进行操作,要么通过封装好的库函数对寄存器进行操作,难免不涉及一些位运算符。其他的就是在学习c语言和x86原理中学到的一些。暂时只想到这些,未完待续。