2017-10-20 3 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; 
} 

Ausgang:Wie man die binären Literale zusammensetzt und bildet, zum Beispiel durch die Umwandlung von Dezimal in C++ 11/C++ 14?

x= 3613 
0000111000011101 
3613 

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

Mit binären Literale können wir normale arithmetische Operationen tun, während sie mit den Saiten mit std :: erhalten bitset <> dies nicht möglich ist. Also ... die Frage ist: wie "komponieren" Sie die binären Literale, zum Beispiel durch die Konvertierung von dezimal zu binär wie erhalten mit std :: bitset <>? Ich freue mich auf Ihre freundliche Hilfe. Marco

+0

Was meinst du mit "komponieren"? Wollen Sie das gleiche wie 'std :: bitset' und string ausgeben, aber mit einer anderen Funktion? Was ist falsch an der Verwendung von 'std :: bitset'? – wally

+0

Was ist los mit 'to_ulong'? – user2357112

+0

Ich denke, ich muss mehr über std :: bitset lernen, um Bitset-Operationen für normale arithmetische Operationen zu verwenden – user2315094

Antwort

0

Sie nicht auf Bitsets sie String arbeiten soll durch die Umwandlung und zurück -, dass der Punkt der Bitsets fehlt ... Stattdessen arbeiten Sie ihnen durch binäre Operatoren: &, |, ^, ... (nur wie du es bei gewöhnlichen ganzen Zahlen machen würdest).

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

Drucke: 100 or 010 = 110

Sie alle Betreiber auf dem Wiki finden: http://en.cppreference.com/w/cpp/utility/bitset

+0

Ich denke, ich muss mehr über std :: bitset lernen, um Bitset-Operationen für gewöhnliche arithmetische Operationen zu verwenden – user2315094

Verwandte Themen