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?
-
-
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 = 3also 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 = 3Ne ne ne, c = 0 !
& funktioniert bitweise wie das logische &&.
-
shade37337 schrieb:
& ist der referenz-operator
(int var1 = &var2) // var 1 ist alias zu var 2Den 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 ausAndererseits 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.