Wofür steht der & opperator?

Diskutiere Wofür steht der & opperator? im Developer Network Forum im Bereich Hardware & Software Forum; Hi, Ich habe gestern folgenden operator nach einer Funktion auftauchen sehen und kp was der bedeuten soll. Das ganze war in einer if abfrage...
  • Wofür steht der & opperator? Beitrag #1
Matyr

Matyr

Bekanntes Mitglied
Dabei seit
09.03.2007
Beiträge
428
Reaktionspunkte
0
Hi,
Ich habe gestern folgenden operator nach einer Funktion auftauchen sehen und kp was der bedeuten soll. Das ganze war in einer if abfrage.


Code:
if(function()&1==1)
....


so sah das aus.

Was bewirkt das jetzt ist die frage?

Mfg. Matyr
 
  • Wofür steht der & opperator? Beitrag #2
S

siggi112

Bekanntes Mitglied
Dabei seit
23.04.1999
Beiträge
3.844
Reaktionspunkte
3
Ort
Kohlenpott
Hmmm... bin etwas raus aus der Materie.
Die Klammer ohne Inhalt und die beiden Geleichheitszeichen verwirren mich völlig.
Keine Ahnung.

Bin mal gespannt ob das Sinn macht.

Gruß
Siggi
 
  • Wofür steht der & opperator? Beitrag #3
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
Das ist eine bitweise UND-Verknüpfung. Es wird abgefragt, ob das niedrigstwertige Bit (der Binärdarstellung) des Funktionsergebnisses gesetzt ist.
Das & bewirkt dabei, dass alle anderen Bits wegen der Verknüpfung mit binär 00000001 (können bei breiteren Datentypen natürlich mehr Nullen sein ;) ) durch die Nullen ausmaskiert werden. Das Ergebnis kann dann nurmehr 0 oder 1 sein.
Üblicherweise verwendet man für Bitmasken allerdings die hexadezimale Schreibweise, 0x01 in dem Fall, da man dieser mit etwas Übung sofort das Bitmuster entnehmen kann, während man bei der Dezimaldarstellung etwas rechnen muss.
 
  • Wofür steht der & opperator? Beitrag #4
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Hmmm... bin etwas raus aus der Materie.
Die Klammer ohne Inhalt und die beiden Geleichheitszeichen verwirren mich völlig.
Das & ist hier eine bitweise Und-Verknüpfung. cmddegi hat das schon erklärt.
Die "Klammern ohne Inhalt" ist ein einfacher Funktionsaufruf ohne Parameter. Es wird also das Ergebnis der Funktion "function()" mit 1 verknüpft und geprüft, ob das Ergebnis 1 ist (== ist der Vergleichsoperator).

Das & kann allerdings je nach Kontext noch mehrere Bedeutungen haben. Nämlich "Adresse von" und Referenz (nur C++).
 
  • Wofür steht der & opperator? Beitrag #5
Matyr

Matyr

Bekanntes Mitglied
Dabei seit
09.03.2007
Beiträge
428
Reaktionspunkte
0
Danke,

@cmddegi
Das heißt wenn die ganze rechte stelle in der binärdarstellung 1 ist liefert das true zurück oder verstehe ich das jetzt falsch?
 
  • Wofür steht der & opperator? Beitrag #6
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
Genau; man bezeichnet das als das niedrigwertigste (Wertigkeit 1) Bit. Die UND-Verknüpfung maskiert alle anderen Stellen aus. D.h. das Ergebnis der UND-Verknüpfung ist nur an den Stellen 1, an denen bei beiden Operanden (meist als Wert und Maske bezeichnet) eine 1 steht. Da die Maske in dem Fall an allen anderen Stellen eine 0 hat, kann im Ergebnis dort niemals eine 1 stehen.
Die Funktion kann vermutlich noch andere Fälle signalisieren, bei denen die 1 dann an anderer Stelle steht, oder eine Kombination aus mehreren. Bei deinem Beispiel wird die if-Abfrage immer erfüllt, wenn eine Eins an der Stelle steht, auch dann, wenn das Ergebnis eine Kombination mit anderen Werten ist.
Würde man direkt auf die Ergebnis-Werte prüfen, müsste man jede mögliche Kombination einzeln abfragen.

PS: UnimatrixZero hat natürlich Recht mit seinen weiteren Ausführungen. Die verschiedenen möglichen Bedeutungen sind wohl ein wichtiger Faktor warum der &-Operator so vielen Leuten Probleme macht.
 
Thema:

Wofür steht der & opperator?

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.179
Beiträge
1.579.172
Mitglieder
55.878
Neuestes Mitglied
Satan666
Oben