Umwandlung Hex/Dec in Binärzahl



  • Hallo, bin grad da (http://www.cpp-tutor.de/cpp/le03/le03_02.htm) ganz unten und da soll man von ner Zahl den Binärwert angeben. Nur find ich nirgends wie man das macht.

    mfg



  • I Killed The Prom Queen schrieb:

    Nur find ich nirgends wie man das macht.

    dann musst du das kapitel noch mal lesen...
    :xmas2:



  • unsigned char charVar = 0x55;
    unsigned char bit = 1 << 7;
    do {
        std::cout << (charVar & bit ? '1' : '0');
    } while(bit >>= 1);
    


  • @ten: nur weil du immer Sachen fragst ohne dich damit zu beschäftigen musst du nicht von deiner Faulheit auf die von anderen schließen :p .

    Kannst aber gerne sagen, wo du die Stelle siehst mit der man das lösen kann (weil ich bin mir nicht sicher, ob du die Seite kennst 🙄 ).

    @Heiliger Nikolaus:
    Kann man das auch ohne do und while Schleifen machen, weil soweit bin ich noch nicht

    mfg



  • std::cout << charVar & (1 << 7);
    std::cout << charVar & (1 << 6);
    ...
    std::cout << charVar & (1 << 1);
    std::cout << charVar & 1;



  • I Killed The Prom Queen schrieb:

    Kannst aber gerne sagen, wo du die Stelle siehst mit der man das lösen kann

    das steht nicht an einer bestimmten stelle. nur wenn man die ganze seite gelesen und verstanden hat, bekommt man's hin...

    I Killed The Prom Queen schrieb:

    (weil ich bin mir nicht sicher, ob du die Seite kennst 🙄 ).

    du hast doch die url geposted 😕



  • I Killed The Prom Queen schrieb:

    Kann man das auch ohne do und while Schleifen machen, weil soweit bin ich noch nicht

    Hast du schon das Kapitel über bitset's durchgenommen? Wenn ja, damit kannst du auch arbeiten.

    Ansonsten bleibt dir höchstens noch die Möglichkeit, eine Schleife durch eine andere zu ersetzen:

    for(bit = 1<<7;bit!=0;bit>>=1)
      cout<<(char_var&bit)!=0;
    


  • Hallo zusammen,

    eine weitere Möglichkeit (Metaprogrammierung), die ich den fortgeschrittenen C++-Programmierern nicht vorenthalten möchte, ist folgende. Die Berechnungen werden alle zur Zeit des Compilierens durchgeführt. Die zu berechnenden Werte müssen während dem Compilieren bekannt sein.

    #include  <iostream>
    using namespace std;
    
    // Umwandlung Dual- in Deziamalsystem
    template <unsigned long n>
    struct BinToDec {
            enum { value = 2 * BinToDec<n/10>::value + n%10 };
    };
    
    template <>
    struct BinToDec<0> { enum { value = 0 }; };
    
    // Umwandlung Dezimal- in Dualsystem
    template <unsigned int n>
    struct DecToBin {
            enum { value = 10 * DecToBin<n >> 1>::value + n%2 };
    };
    
    template <>
    struct DecToBin<1> { enum { value = 1 }; };
    template <>
    struct DecToBin<0> { enum { value = 0 }; };
    
    int main()
    {
            cout << BinToDec<1>::value << endl
                 << BinToDec<11>::value << endl
                 << BinToDec<101>::value << endl;
            cout << DecToBin<1>::value << endl
                 << DecToBin<3>::value << endl
                 << DecToBin<5>::value << endl;
            cout << DecToBin<BinToDec<1001010110>::value>::value << endl;
    }
    

    Grüße Martin



  • lucky_tux schrieb:

    nicht vorenthalten möchte

    Danke, Meister ^^


Anmelden zum Antworten