C++ binäre Zahlen?



  • hallo, ist vielleicht ne triviale Frage, aber wie mache ich ne binäre Zahl?

    Insbesondere frage ich mich, wie ich die binäre Zahl stellenweise setzen und auslesen kann :S

    Ich finde irgendwie keine Referenz.

    Ich könnte das zwar als Array machen, aber würde es gerne vermeiden.

    danke im voraus



  • Key schrieb:

    hallo, ist vielleicht ne triviale Frage, aber wie mache ich ne binäre Zahl?

    Jede Zahl wird im Prozessor und im RAM und sogar auf der Festplatte binär gespeichert.

    Key schrieb:

    Insbesondere frage ich mich, wie ich die binäre Zahl stellenweise setzen und auslesen kann :S

    Zum Beispiel so:

    int zahl = 23;
    zahl |= 256; // 256 (dezimal) = 00000000 00000000 00000001 00000000 (binär); das 1er-Bit wird gesetzt
    

    Moritz

    /Edit: Schreibfehler beseitigt



  • ich versteh die frage zwar nicht 100%ig, aber hast du dir schonmal std::bitset angeschaut?
    http://www.cppreference.com/cppbitset/



  • danke danke !

    ja, das Bitset hab ich mir angeschaut, aber nicht gerafft 😉

    hmm, was ich eigentlich gerne machen würde ist z.B.

    Eine binäre Zahl stellenweise erzeugen:

    int stelle1=1;

    int stelle2=0;

    int stelle3=1;

    und jetzt "quasi"
    (datentyp binär?) digital = stelle3,stelle2,stelle´1;

    digtital wäre dann 101



  • key schrieb:

    Eine binäre Zahl stellenweise erzeugen:

    sowas?

    ...
    #define BIT(_x_) (1<<(_x_))
    ...
    int x = BIT(7)+BIT(0); // 2^7 + 2^0
    ...
    


  • net schrieb:

    key schrieb:

    Eine binäre Zahl stellenweise erzeugen:

    sowas?

    ...
    #define BIT(_x_) (1<<(_x_))
    ...
    int x = BIT(7)+BIT(0); // 2^7 + 2^0
    ...
    

    Gewöhn dir besser gleich den |-Operator an, sonst kommt Unsinn heraus, wenn das Bit schon gesetzt ist.

    #define BIT(_x_) (1<<(_x_))
    ...
    int x = BIT (7) | BIT (0); // 2^7 | 2^0
    
    x |= BIT (7); // hier wäre x sonst Mist
    

    Moritz



  • audacia schrieb:

    Gewöhn dir besser gleich den |-Operator an...

    besser ist das 😉



  • super, danke!


Anmelden zum Antworten