下面的代码会将数字的二进制输出写入控制台,如下所示:
00100000
#include <bitset>
using std::bitset;
#include <iostream>
using std::cout;
using std::endl;
int main()
{
typedef const unsigned char byte;
byte a = 0b00'000'000; // 0
byte b = 0b00'000'001; // 1
byte c = 0b00'000'010; // 2
byte d = 0b00'000'100; // 4
byte e = 0b00'001'000; // 8
byte f = 0b00'010'000; // 16
byte g = 0b00'100'000; // 32
byte h = 0b01'000'000; // 64
byte i = 0b10'000'000; // 128
bitset<8> x = a | 1 << 5;
cout << x << endl;
}
我希望输出是这样的:
00'100'000
有没有简单的方法可以做到这一点?
最佳答案
这是解决方案之一:
template<size_t I>
std::ostream& operator << (std::ostream& os, const bitset<I>& b)
{
int i;
int check = b.size()-b.size()%3;
for(i=b.size()-1; i >= check; --i)
os << b[i];
if(i>0)
os << char(39);
for(; i>=0; --i)
{
os << b[i];
if(i%3 == 0 && i!=0)
os << char(39);
}
return os;
}
关于c++ - 使用 std::cout 格式化二进制文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34631095/