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


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::bitset 获得的字符串<>这是不可能的。所以。。。问题是:如何"组成"二进制文字,例如通过使用 std::bitset 获得的从十进制到二进制的转换<>?期待您的帮助。马可

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

std::cout << std::bitset<3>(4) << " or "
          << std::bitset<3>(2) << " = "
          << (std::bitset<3>(4) | std::bitset<3>(2)) << std::endl;

印刷品: 100 or 010 = 110

您可以在wiki上找到所有运算符:http://en.cppreference.com/w/cpp/utility/bitset

相关内容

  • 没有找到相关文章