使用 Bitset 将 16 位显示为四组,每组 4 位,C++

Using Bitset to display 16 bits into four groups of 4 bits in C++

本文关键字:四组 每组 C++ Bitset 显示 使用      更新时间:2023-10-16

我正在做一个编程任务,我正在使用 bitset<> 函数在C++中打印一个整数的二进制表示 16 位。我很难尝试将 16 位打印成四组,每组四位,中间有一个空格。如何使用位集函数执行此操作?

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

如果整数为 1,则会打印出来

0b0000000000000001

我正在尝试打印的是

0b0000 0000 0000 0001

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

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;}
}

位集的<<运算符不提供分隔半字节的格式说明符。您必须自己遍历这些位并"手动"引入分隔符:

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;
}