使用Bitset在C ++中将16位显示为4组4位

时间:2017-09-16 21:35:47

标签: c++ binary output std-bitset

我正在编写一个编程作业,我正在使用bitset<>在C ++中打印函数将整数的二进制表示放16位。我很难尝试将16位打印成四组四位,中间有一个空格。我怎么能用bitset函数做到这一点?

cout << "0b" << bitset<16>(integer) << "\t";

如果整数是1

,则打印出来
0b0000000000000001

我想打印的是

0b0000 0000 0000 0001

2 个答案:

答案 0 :(得分:0)

您可以实现过滤流,但为什么不保持简单?

auto the_number = std::bitset<16>(1);

std::cout << "0b";
int count = 0;
for(int i=the_number.size()-1; i>=0; i--)
{
    std::cout << std::bitset<16>(255)[i];
    if(++count == 4) {std::cout << " "; count = 0;}
}

答案 1 :(得分:0)

bitsets的<< - 运算符不提供用于分隔半字节的格式说明符。你必须自己迭代这些位并“手动”引入分隔符:

int main() {

    int integer = 24234;
    bitset<16> bits(integer);
    cout << "0b";
    for (std::size_t i = 0; i < bits.size(); ++i) {
        if (i && i%4 == 0) { // write a space before starting a new nibble (except before the very first nibble)
            cout << ' ';
        }
        std::cout << bits[bits.size() - i - 1];
    }
    return 0;
}