然后我们可以使用上面这个宏函数来完成在C语言环境中对信号变量的某些bit位进行操作,参考如下代码: //定义一个16位宽的wdata变量 uint16_t wdata; //对其赋初值为16'habcd wdata = 0xabcd; //改变第0~3bit的值为f,则最终值为16'habcf wdata = SET_BITS_N_M_Y(wdata, 0, 3, 0xf); 其实知道以...
#defineGET_BIT(value,bit)((value)&(1<<(bit)))//读取指定位#defineCPL_BIT(value,bit)((value)^=(1<<(bit)))//取反指定位#defineSET0_BIT(value,bit)((value)&=~(1<<(bit)))//把某个位置0#defineSET1_BIT(value,bit)((value)|=(1<<(bit)))//把某个位置1 位操作函数 这4个宏定义...
宏定义技巧一:定义常量 宏定义技巧二:定义函数 宏定义技巧三:参数化宏定义 宏定义技巧四:使用#ifdef保护宏定义 宏定义技巧五:使用宏定义进行调试 宏定义技巧六:使用宏定义进行字符串拼接 宏定义技巧七:使用宏定义进行条件编译 宏定义技巧八:使用宏定义进行类型转换 宏定义技巧九:使用宏定义进行位操作 宏定义技巧十...
五.用宏定义来实现位操作 1.其实目的就是把几行的代码写到一行去(难度也是在这里),我们直接看代码,自己领悟。 1 #include <stdio.h> 2 3 //这里就是要把数字x的第n位(bit(n-1)位)置为1 4 //1U就表示的是无符号的1,宏定义可以传参的 5 #define SET_BIT(x,n) (x | 1U<<(n-1)) 6 7 /...
一,位操作一般用法 1,特定位清零用“&”。 要想把一个数的特定位清零,就需要构造另一个数,这个数的对应特定位为0,其他位为1。2 2,特定位置1用“|”。 要想把一个数的特定位置1(设置特定位),就需要构造另一个数,这个数的对应特定位为1,其他位为0。 3,特定位取反用“^”。 要想把一个数的特定位...
算式实现: 先得到32位1: ~0U 将第3)得到的数,右移(32-(m-n+1))位就得到了低(m-n+1)全为1,其他高位为0的数 (~0U)>>(32-(m-n+1)) 5. 之后并左移n位后位与(|)操作 代码验证: 宏定义实现多位置位 截取变量的部分连续位 #defineGET_BITS(x, n, m) ((x & ~(~(0U)<<(m-n+1...
也有程序员采取如下宏定义的方法实现单个位的操作,使用十分方便: #define SET_BIT(x,y) ((x)|=(0x0001<<(y)))//置x的第y位 #define CLR_BIT(x,y) ((x)&=~( 0x0001<<(y)))//清x的第y位为0 #define CPL_BIT(x,y) ((x)^= (0x0001<<(y)))//取反x的第y位 ...
怎么设置鼠标宏,你知道那些游戏高手出大招为什么那么快吗,都是用来鼠标宏,你要是会设置,也可以成为游戏高手。#抖音618好物节 #游戏顶级操作 00:00 /01:39 连播 清屏 智能 倍速 1207 ROG授权直播间(电竞静静)1年前 最近很多小伙伴询问 给大家出一期鼠标宏设置吧!#rog #宏设置 #教程 ...
1.4 ^按位异或操作使用技巧 该功能非常适合用于控制某个位翻转,常见的应用场景就是控制LED闪烁,如下: GPIOB->ODR ^= 1 << 5; 执行一次该代码,就会使PB5的输出状态翻转一次,如果我们的LED接在PB5上,就可以看到LED闪烁了。 02 define宏定义 define是C语言中的预处理命令,它用于宏定义(定义的是常量),可以提...