位操作整数或位屏蔽的单个位

时间:2015-11-16 17:17:07

标签: bit-manipulation bit bitmask

我想定义一个寄存器或变量的位。 例如:    #define Pin5(portA的第5位)//假设porta是16位数据类型。

如何定义变量的单个位,以便我可以轻松切换该位,使我的代码更容易在我的眼睛上。请注意,我希望位值成为变量的RValue。

例如,

   Pin5 = 1; //将导致partA的第5位为1

1 个答案:

答案 0 :(得分:0)

鉴于bitfields是一个坏主意,最干净的我已经能够提出代码"轻松的眼睛" (即将尽可能多的语法包装到宏中):

#define setbit(n) |=(1<<(n))
#define clrbit(n) &=~(1<<(n))

然后你的例子的代码是:

portA setbit(5);