rand() & 2



  • Hallo!

    Ich habe hier einen Code vorliegen in dem folgendes vorkommt:

    if (rand() & 2)
    

    was bewirkt das mit dem & 2 genau?

    Schöne Grüße,

    soulflare



  • Soulflare
    Learning by doing:

    for (unsigned long i=0; i<10; ++i)
        std::cout << (rand() & 2) << std::endl;
    

    Nicht vergessen vorher srand zu initialisieren!



  • 0
    0
    2
    0
    2
    2
    0
    2
    2
    0

    ...kommt da zum Beispiel raus. Verstehe ees trotzdem nicht ganz. Kommt da 50:50 entweder 0 oder 2 raus?



  • Hallo

    Das ist die Mathematische Modulo-Operation in C++ Syntax.

    bis bald
    akari



  • akari schrieb:

    Das ist die Mathematische Modulo-Operation in C++ Syntax.

    Nene, hat in diesem Fall mit Modulo nichts am Hut. Modulo wäre &3.



  • Hallo

    oh... ist schon spät, ist wirklich nicht Modulo.
    Modulo wäre übrigens %

    bis bald
    akari



  • TactX schrieb:

    Modulo wäre &3.

    Trick 17 mit dreifacher Selbstüberlistung?

    Modulo:

    a%b;
    

    bitweises Und:

    a&b;
    

    🤡

    EDIT: rand() liefert ja eine pseudo-zufällige Zahl in einem bestimmten (relativ großen) Bereich. Durch das &2 wird auf das Ergebnis ein bitweises und mit 2 durchgeführt. Das heißt, wenn das Bit für 2 in der zufälligen Zahl gesetzt ist, kommt 2 heraus, ansonsten 0.



  • Phoemuex schrieb:

    TactX schrieb:

    Modulo wäre &3.

    Trick 17 mit dreifacher Selbstüberlistung?

    Wie meinen?



  • *lol*



  • Das &-zeichen kenne ich alleine nur als Adress-Operator der die Adresse als Hex-Code ausliefert. In doppelter Kombination als logisches Und. Mehr kenn ich auch nicht.



  • t1m0n schrieb:

    Das &-zeichen kenne ich alleine nur als Adress-Operator der die Adresse als Hex-Code ausliefert. In doppelter Kombination als logisches Und. Mehr kenn ich auch nicht.

    Dann solltest du mal ausprobieren was man damit noch so machen kann 😉 .



  • TactX schrieb:

    akari schrieb:

    Das ist die Mathematische Modulo-Operation in C++ Syntax.

    Nene, hat in diesem Fall mit Modulo nichts am Hut. Modulo wäre &3.

    Das wäre aber nicht modulo 2. &1 wäre gleichbedeutend mit %2.



  • Klar. Sorry wenn ich etwas Konfusion verursacht habe.



  • & ist der Address-operator
    (&var) // adresse
    & ist der referenz-operator
    (int var1 = &var2) // var 1 ist alias zu var 2
    && is ein logischer-operator sein
    ( if((var && 1) == true ) // wenn var != 0 dann true...
    & ist ein binäre-operator
    a = 1;
    b = 2;
    c = a&b
    // c = 00000001
    // & 00000010
    // ----------------------
    // 00000011
    // c = 3

    also lern erst mal alle operatoren..... is net so schwer ich hab ja schlieslcih dafür auch kein 2 jahre gebraucht.. 😉 😉 😉

    Mfg shade37337...



  • shade37337 schrieb:

    a = 1;
    b = 2;
    c = a&b
    // c = 00000001
    // & 00000010
    // ----------------------
    // 00000011
    // c = 3

    Ne ne ne, c = 0 !
    & funktioniert bitweise wie das logische &&.



  • shade37337 schrieb:

    & ist der referenz-operator
    (int var1 = &var2) // var 1 ist alias zu var 2

    Den solltest Du vielleicht nochmal lernen 😡



  • sorry nur ein bissl vertippz....
    es mus natürlci so heissen...:

    int& var1  = var2 //var1 ist alias für var 2
    

    sorry hab nur des & auf die falsche seite gemacht....
    bin au nur ein mensch..jeder kann mal ein fehler machen...



  • An diesem "Fehler" merkt man, dass dir etwas noch nicht in Fleisch und Blut übergegangen ist. Vielleicht solltest du dich dann mit Erklärungen zurückhalten, statt anderen etwas falsches zu erklären.



  • ja du hast schon recht aba ich wollt nur mal versuchen...
    ich prog C++ au erst seit nem3/4 jahr ungefähr



  • Walli schrieb:

    Vielleicht solltest du dich dann mit Erklärungen zurückhalten, statt anderen etwas falsches zu erklären.

    Wenn nur die antworten würden, die sich immer zu 100% sicher fühlen,
    sähe es hier ziemlich leer aus 😞

    Andererseits habe ich die Erfahrung gemacht, daß, wenn ein vermeintlich
    Wissender mal etwas falsches postet, sich sofort ein Haufen Korrigierer
    wie Geier auf ihn stürzen um ihn zu korrigieren; und das sind meistens welche,
    die sonst nur die Threads durchlesen und sich selten selbst beteiligen.
    🕶


Log in to reply