【发布时间】:2021-02-17 22:03:57
【问题描述】:
我正在寻找一种有效的(最好是宏)方法来提取位的位置并将其保存为 C 中的值。
data = 0x4000
会产生:
pos = 14
我正在读取的 16 位寄存器中只会设置一个位。目前,我只是将数据与位移值进行比较以提取位置,但一定有更好的方法我不知道。
我花了一些时间在这里搜索一个类似的问题,但找不到。
【问题讨论】:
-
这是一个16位的值?编写一个
switch语句,标识设置了 16 位中的哪一个。 -
要么选择 Switch Case,要么选择带面具的循环
(data & (1<<n)) -
你真正想要达到什么目的?看起来你想在这里的圆孔里放一个方钉(xy 问题)
-
您是否针对特定的编译器?如果是这样,可能有一个内置函数可以使用。
-
如果 i.E.数据 = 0x807f?
标签: c bit-manipulation c-preprocessor