Wie verwende ich die bitweisen Operatoren von Java in Kotlin?

Lesezeit: 2 Minuten

Benutzer-Avatar
Wasser magisch

Java hat binär-oder | und binär-und & Betreiber:

int a = 5 | 10;
int b = 5 & 10;

Sie scheinen in Kotlin nicht zu funktionieren:

val a = 5 | 10;
val b = 5 & 10;

Wie verwende ich die bitweisen Operatoren von Java in Kotlin?

  • Wie wäre es mit |=?

    – IgorGanapolsky

    4. Mai 2020 um 21:38 Uhr

  • Für alle, die bitweise Operatoren in Kotlin brauchen: bitte abstimmen youtrack.jetbrains.com/issue/KT-1440

    – wählen

    7. Mai 2020 um 9:37 Uhr

Benutzer-Avatar
Sicher Atta

Sie haben ihnen Funktionen benannt.

Direkt von Kotlin-Dokumente

Bitweise Operationen werden durch Funktionen dargestellt, die in Infix-Form aufgerufen werden können. Sie können nur auf angewendet werden Int und Long.

zum Beispiel:

val x = (1 shl 2) and 0x000FF000

Hier ist die vollständige Liste der bitweisen Operationen:

shl(bits) – signed shift left (Java's <<)
shr(bits) – signed shift right (Java's >>)
ushr(bits) – unsigned shift right (Java's >>>)
and(bits) – bitwise and
or(bits) – bitwise or
xor(bits) – bitwise xor
inv() – bitwise inversion

  • Beachten Sie, dass die bitweise Umkehrung wie verwendet werden würde 5.inv()nicht so infix wie die anderen

    – xjcl

    22. November 2020 um 15:15 Uhr

  • Beachten Sie, dass die bitweise Umkehrung auch als bitweises Komplement oder bitweises NICHT bekannt ist

    – Grin

    15. Januar 2021 um 9:02 Uhr

  • Ich finde es seltsam, dass Kotlin entschieden hat, dass bitweise Operatoren diese umständlich benannten Funktionen erhalten, während die eigentlichen booleschen Operatoren wie und und oder immer noch Operatoren haben. Es ist ein bisschen rückwärts, nicht wahr? Wenn überhaupt, möchte ich, dass diese als Symbole bleiben und die booleschen Operatoren zu Wörtern werden.

    – Hakanai

    26. Juli 2021 um 0:04 Uhr

Benutzer-Avatar
Ali Faris

Sie können dies in Kotlin tun

val a = 5 or 10;
val b = 5 and 10;

hier Liste der Operationen, die Sie verwenden können

shl(bits) – signed shift left (Java's <<)
shr(bits) – signed shift right (Java's >>)
ushr(bits) – unsigned shift right (Java's >>>)
and(bits) – bitwise and
or(bits) – bitwise or
xor(bits) – bitwise xor
inv() – bitwise inversion

Dies wird derzeit nicht unterstützt, aber höchstwahrscheinlich vom neuen Kotlin-Compiler K2sehen Kommentar von Roman Elizarov zur YouTrack-Ausgabe KT-1440.

Sehen KT-46756 für die kommende Alpha-Version und behalten Sie die im Auge Fahrplan.

Ein anderes Beispiel:

Java:

 byte dataHigh = (byte) ((data[byteOffset] & 0xF0) >> 4);

Kotlin

val d = (data[byteOffset] and 0xF0.toByte())
val dataHigh = (d.toInt() shr 4).toByte()

1158270cookie-checkWie verwende ich die bitweisen Operatoren von Java in Kotlin?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy