生成位掩码

时间:2013-10-02 00:34:47

标签: c++ bitmask bit-manipulation

给出两个整数; sizeoffset,我将如何生成具有以下属性的位掩码;

MSD             LSD
1111 1111 0000 1111
          ^  ^
size = 4 -|  |
             |  
offset = 4  -|

编辑;这似乎有效(找到解决方案后)

((1 << size) - 1) << offset;

1 个答案:

答案 0 :(得分:1)

由于问题被标记为c ++,我将提供基于STL的解决方案:

bitset<NUM_BITS> bs(0);
bs = ((bs.flip() << size).flip() << offset).flip();

相同的代码分为几行:

bitset<NUM_BITS> bs(0);
bs.flip();
bs <<= size;
bs.flip();
bs <<= offset;
bs.flip();

性能方面的考虑取决于读者。