将位位置转换为掩码值

Mah*_*ana 1 c embedded

我想根据位位置动态计算掩码的值.

例如:32位值中第17位的掩码值为0x00020000,第18位的掩码值为0x00040000.因此,如果我知道像17,18等位位置,如何动态转换为掩盖C中的值?当然左移是一种方法(1<<171<<18).但我认为左移可能会消耗太多指令!或者左移是最好和最有效的方法?

Dra*_*kes 6

基本上,它不会消耗太多指令.你在做什么可能在一次手术中没问题.这是一个在SO上解释这个问题的答案:哪个更快:x << 1或x << 10?基本上速度没有区别.

对于实现,请参阅此答案: 如何设置,清除和切换单个位?