Notation für Logik in Java

7

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.

    
Sal 08.02.2012, 23:11
quelle

5 Antworten

17

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.

    
Louis Wasserman 08.02.2012, 23:13
quelle
10

& ist bitweise UND. Wenn zwei Bits für Eingänge gegeben sind, ergibt das folgende Bit das bitweise UND:

%Vor%

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%     
ikegami 08.02.2012 23:20
quelle
4

& 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.

>     
jbranchaud 08.02.2012 23:16
quelle
3

Es ist Bit-Vergleich, funktioniert gut, weil Sie mit 7 und 8 vergleichen, nicht mit anderen Fällen garantiert. Wenn beide Bits in den Ganzzahlen übereinstimmen, erhalten Sie Ergebnisse als "1" und nicht als "0".

    
kosa 08.02.2012 23:15
quelle
3

& 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.

    
AndrasK 09.02.2012 00:08
quelle