生成位掩码

Generate Bitmask

本文关键字:掩码      更新时间:2023-10-16

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

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

由于问题被标记为 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();

性能注意事项取决于读者。