semantik/java

  • Sind beides bitweise Operatoren.


    |...................(logisches) ODER ohne Short-Circuit-Evaluation:

    a | b ergibt true, wenn mindestens einer der beiden Ausdrücke a oder b wahr ist. Beide Teilausdrücke werden ausgewertet.


    <<..................Linksschieben (Bitshift):

    a << b ergibt den Wert, der entsteht, wenn alle Bits von a um b Positionen nach links geschoben werden. Das niederwertigste Bit wird mit 0 aufgefüllt, das höchstwertige Bit (also das Vorzeichen) wird von a übernommen.

  • | ist das bitweise ODER, nicht das logische (das wär ||). Beim ODER fällts nicht so auf aber beim UND (& bzw. &&) ist es fatal, die beiden zu verwechseln (01 & 10 == 0; 01 && 10 == 1). Das nur der Vollständigkeit halber.

    Beim Linksshift geht das Vorzeichen mehr oder weniger immer verloren; das fällt aber nur auf, wenns bei einem *2 auch zu einem Overflow kommen würde (dank dem Zweierkomplement). Nur beim Rechtsshift gibt es die Unterscheidung zwischen signed (i.e. 1 nachschieben) und unsigned (0 nachschieben).

    Why bother spending time reading up on things? Everybody's an authority, in a free land.

  • kleine Korrektur:

    Zitat von jeuneS2

    (01 & 10 == 0; 01 && 10 == 1)

    (01 && 10 == 1) währe in Java gar kein gültiger Ausdruck, weil auf der linken und auf der rechten Seite vom && Operator Boolean werte stehen müssen. Und auch das Ergebnis eines Ausdrucks ist immer vom typ Boolean, kann also nicht 1 sein.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!