如何在Kotlin中使用Java的按位运算符?

Wat*_*al 21 java bitwise-operators bitwise-and bitwise-or kotlin

Java有二进制或 |二进制和 &运营商:

int a = 5 | 10;
int b = 5 & 10;
Run Code Online (Sandbox Code Playgroud)

它们似乎不适用于Kotlin:

val a = 5 | 10;
val b = 5 & 10;
Run Code Online (Sandbox Code Playgroud)

如何在Kotlin中使用Java的按位运算符?

Sur*_*tta 27

您已为它们命名了功能.

直接来自Kotlin docs

按位操作,它们没有特殊字符,只是可以用中缀形式调用的命名函数.

例如:

val x = (1 shl 2) and 0x000FF000
Run Code Online (Sandbox Code Playgroud)

以下是按位运算的完整列表(仅适用于Int和Long):

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
Run Code Online (Sandbox Code Playgroud)

  • 请注意,按位反转将像“5.inv()”一样使用,而不是像其他那样作为中缀 (7认同)
  • 我觉得奇怪的是,Kotlin 决定按位运算符会得到这些命名尴尬的函数,而实际的布尔运算符(如 and 和 or)仍然得到运算符。是不是有点落后了?如果有的话,我希望它们保留为符号,布尔运算符成为单词。 (3认同)
  • 请注意,按位取反也称为按位求补或按位 NOT (2认同)

Ali*_*Ali 7

你可以在科特林做到这一点

val a = 5 or 10;
val b = 5 and 10;
Run Code Online (Sandbox Code Playgroud)

此处可以使用的操作列表

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
Run Code Online (Sandbox Code Playgroud)