2017-10-20 157 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

相關問題