Absolut einfache Java-Frage, die ich auf Google schwer finden kann. Was bedeutet folgendes:
%Vor%Ist das äquivalent zum Schreiben:
%Vor%Ich habe eine kurze main geschrieben, die das testet, und es scheint so zu sein. Ich wollte nur sicherstellen, dass ich nichts verpasse.
Nein. &
ist bitweise und . Es setzt ein Bit, wenn die entsprechenden Bits in beiden Eingängen gesetzt sind. Da in binär, 7 ist 111
und 8 ist 1000
, sie haben keine Bits gemeinsam, so dass das Ergebnis ist 0
.
Es gibt keine Abkürzungssyntax für das, was Sie vorschlagen, nicht in einer einzigen Zeile. Es gibt ein paar Workarounds - Testen Sie die Mitgliedschaft in Set
oder BitSet
, verwenden Sie eine switch
-Anweisung - aber nichts, das sowohl so effizient und so kurz wie nur 7 == 0 || 8 == 0
ist.
&
ist bitweise UND. Wenn zwei Bits für Eingänge gegeben sind, ergibt das folgende Bit das bitweise UND:
In diesem Fall
%Vor%Sagen Sie, Sie hätten 26 statt 8.
%Vor%Bitweise Operationen werden verwendet, um in eine Zahl gepackte Felder zu extrahieren und zu manipulieren.
Nehmen wir beispielsweise an, Sie hätten drei Felder in eine Zahl gepackt, zwei zu je vier Bits (0..15), eins und drei Bits (0..7).
%Vor% &
ist ein bitweiser AND-Operator. Dies bedeutet, dass Sie die Bits, die 8 und 7 repräsentieren, UND-verknüpfen:
7
- & gt; 0111
8
- & gt; 1000
Was offensichtlich zu 0 führt.
Dieser Wikipedia-Artikel erklärt es gut mit Ihrem exakten Beispiel und erläutert die anderen bitweisen Operatoren.
>& amp; ist ein bisschen Vergleich, wie erwähnt, kann aber auch als ein Kurzschluss "und" dienen. Zum Beispiel:
%Vor%wird die ganze Zeit einen Fehler ausgeben. Jedoch,
%Vor%wird nur dann einen Fehler ausgeben, wenn x gleich 3 ist. Wenn x nicht gleich 3 ist, wird Java die restlichen Ausdrücke nicht bewerten, da False & amp; alles wird falsch sein.
Tags und Links java notation operators bitwise-operators