c++ - 生成位掩码

标签 c++ c++11 bitmask bit-manipulation

给定两个整数; 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();

性能方面的考虑由读者决定。

关于c++ - 生成位掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19128214/

相关文章:

c++ - 模板特化别名

c++ - boost::bind 函数及其输入参数错误

c++ - 按类型获取元组元素(C++0x 之前)

c++ - 如何格式化 std::chrono 持续时间?

c++ - 如何从 std::async 任务返回 std::tuple

python - 如何屏蔽未知大小的 Python 整数的较低 'x' 位

c# - 如果位掩码包含位,我该如何检查?

c++ - C++ 头文件中的 const 数组声明

c++ - 使用 memcpy 时崩溃?

bitmask - 位掩码问题