Notes02常用位操作方法
野火霸道开发板学习笔记
信息说明
- 开发板: 野火霸道V2
- 芯片型号: STM32F103ZET6
- 下载器型号: 野火fireDAP下载器(高速版)
- 软件环境: Keil5(MDK-ARM V5.15)
- 芯片包型号: Keil.STM32F1xx_DFP.1.1.0 注: 亲测版本2.4.0不可用
- 操作系统 : Win11
位操作方法
把某位清零
此处我们以变量 a 代表寄存器,并假设寄存器中本来已有数值,此时我们需要把变量 a 的某一位清零,且其它位不变
unsigned char a = 0x9f; // 1001 1111
// 把Bit2清零
a &= ~(1 << 2);
/*
* 括号中的 1 左移两位,(1<<2) 得二进制数:0000 0100 b
* 按位取反,~(1<<2) 得 1111 1011 b
* 假如 a 中原来的值为二进制数: a = 1001 1111 b
* 所得的数与 a 作”位与&”运算,a = (1001 1111 b)&(1111 1011 b)
* 经过运算后,a 的值 a=1001 1011 b
* a 的 bit2 位被被零,而其它位不变
*/
将变量a的bit n位清零, a &= ~(1 << n)