位运算在linux内核或裸驱中使用十分常见,下面是两种使用方式在此记录: 对寄存器进行操作: 举个例子, 1、清除bit8-bit10,并将bit8-bit10设置为0x2
reg = (reg & (~(0x7 << 8)) | (0x2 << 8));2、将bit4置一和置零
reg = (reg & (~(0x1<<4))) | (0x0 << 4); // bit4置零 reg = (reg & (~(0x1<<4))) | (0x1 << 4); // bit4置一实际应用:
#define BIT(nr) (1UL << (nr)) // 指定nr位置设置为1 #ifdef CONFIG_ARM64 #define BITS_PER_LONG 64 #else #define BITS_PER_LONG 32 #define GENMASK(h, l) \ (((~0UL) << (l)) & (~0UL >> (BITS_PER_LONG - 1 - (h)))) // 生成一个位掩码,其中参数h和l分别表示要设置为1的最高位和最低位的位置。
标签:20240310,运算,--,bit8,bit10,reg From: https://www.cnblogs.com/lethe1203/p/18064213