C++11 如何组合和形成二进制文字,例如通过C+中十进制的转换+;11/C++;14?

C++11 如何组合和形成二进制文字,例如通过C+中十进制的转换+;11/C++;14?,c++11,binary,decimal,c++14,user-defined-literals,C++11,Binary,Decimal,C++14,User Defined Literals,对于二进制文本,我们可以进行正常的算术运算,而对于通过std::bitset获得的字符串,这是不可能的。 所以…问题是:如何“组合”二进制文本,例如通过使用std::bitset从十进制转换为二进制? 期待您的帮助。Marco您不应该通过将位集转换为字符串并返回来对其进行操作-这缺少了位集的要点。。。相反,您可以使用二进制运算符对它们进行操作:&,|,^。。。(就像对普通整数一样) 你说的“撰写”是什么意思?您的意思是要做与std::bitset和字符串输出相同的事情,但要使用另一个函数吗?使用

对于二进制文本,我们可以进行正常的算术运算,而对于通过std::bitset获得的字符串,这是不可能的。 所以…问题是:如何“组合”二进制文本,例如通过使用std::bitset从十进制转换为二进制?
期待您的帮助。Marco

您不应该通过将位集转换为字符串并返回来对其进行操作-这缺少了位集的要点。。。相反,您可以使用二进制运算符对它们进行操作:
&
|
^
。。。(就像对普通整数一样)


你说的“撰写”是什么意思?您的意思是要做与
std::bitset
和字符串输出相同的事情,但要使用另一个函数吗?使用
std::bitset
有什么问题吗
to_ulong
有什么问题吗?我想我必须了解更多关于std::bitset的信息,以便在普通算术运算中使用位集运算我想我必须了解更多关于std::bitset的信息,以便在普通算术运算中使用位集运算
int main() {
  int x = 3613;
  std::cout << "x= " << x << std::endl;
  std::string xBin = std::bitset<16>(x).to_string();
  std::cout << xBin << std::endl;
  unsigned long xDecimal = std::bitset<16>(xBin).to_ulong();
  std::cout << xDecimal << std::endl;
  std::cout << std::endl << std::endl;
  int b01 = 0b11001;
  std::cout << "b01= " << b01 << std::endl;
  int b02 = 0b1010;
  std::cout << "b02= " << b02 << std::endl;
  int b03 = b01 + b02;
  std::cout << "int b03 = b01 + b02 = " << b03 << std::endl;
  return 0;
}
x= 3613
0000111000011101
3613

 b01= 25
 b02= 10
 int b03 = b01 + b02 = 35
std::cout << std::bitset<3>(4) << " or "
          << std::bitset<3>(2) << " = "
          << (std::bitset<3>(4) | std::bitset<3>(2)) << std::endl;