如何组合和形成二进制文字,例如通过 C++11 / C++14 中的十进制转换?
How to compose and form the binary literals, for example through the conversion from decimal in 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<> 获得的字符串,这是不可能的。
所以...问题是:如何 "compose" 二进制文字,例如通过使用 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
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<> 获得的字符串,这是不可能的。 所以...问题是:如何 "compose" 二进制文字,例如通过使用 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