如何从bitset< 16>中选择前8位。在c ++中?

时间:2015-11-03 09:19:10

标签: c++ bitset

我有一个变量,它的类型是bitset< 16>。我想得到我的变量的前8位并将其放入char变量。我知道如何将bitset转换为char,但我不知道如何选择前8位并将其转换为char。

2 个答案:

答案 0 :(得分:4)

如果通过"前8位"您正在谈论8-MSB,请考虑使用>>运营商:

#include <iostream>

int main() {
    std::bitset<16> myBits(0b0110110001111101);
    char reg = 0;

    reg = static_cast<char>(myBits.to_ulong() >> 8);
}

答案 1 :(得分:1)

来自doc of the std::bitset constructor

  

如果val的值表示大于bitset大小,   只考虑val的最低有效位。

所以另一个解决方案可能是:

#include <iostream>

int main() {
    std::bitset<16> myBits16(0b0110110001111101);
    std::bitset<8> myBits8(myBits16.to_ulong());
    char reg = static_cast<char>(myBits8.to_ulong());
}