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.

  • Es ist auch nicht Möglich, in Java Binärzahlen zu schreiben, also ist das eher irrelevant...

    EDIT: Ok, würde mit Dezimalzahlen auch funktionieren. Aber meistens meint man das doch eher binär, wenn man mit einzelnen Bits herumhantiert.

Jetzt mitmachen!

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