2017-10-20 122 views
-1
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; 
} 

输出:如何编写和形成二进制文字,例如通过C++ 11/C++ 14中的十进制转换?

x= 3613 
0000111000011101 
3613 

b01= 25 
b02= 10 
int b03 = b01 + b02 = 35 

用二进制文字我们可以做正常的算术运算,而与性病获得的字符串:: bitset的<>这是不可能的。 所以......问题是:如何“编写”二进制文字,例如通过从十进制转换为二进制,如使用std :: bitset <>获得的? 期待您的亲切帮助。马可

+0

你所说的 “创作” 是什么意思?你的意思是做同样的事情'std :: bitset'和字符串输出,但与另一个功能?使用'std :: bitset'有什么问题? – wally

+0

'to_ulong'有什么问题? – user2357112

+0

我想我必须学习更多关于std :: bitset为了使用普通算术运算的bitset操作 – user2315094

回答

0

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

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

你可以找到关于维基所有运营商:http://en.cppreference.com/w/cpp/utility/bitset

+0

我想我必须学习更多关于std :: bitset为了使用普通算术运算的bitset操作 – user2315094

相关问题