C++11 如何组合和形成二进制文字,例如通过C+中十进制的转换+;11/C++;14?
对于二进制文本,我们可以进行正常的算术运算,而对于通过std::bitset获得的字符串,这是不可能的。 所以…问题是:如何“组合”二进制文本,例如通过使用std::bitset从十进制转换为二进制?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和字符串输出相同的事情,但要使用另一个函数吗?使用
期待您的帮助。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;