Operators
JAVA运算符
赋值运算符
&= 按位与赋值运算符 C&= 2等价于C = C&2
| = 按位或赋值操作符 C | = 2等价于C = C | 2
http://www.runoob.com/java/java-operators.html
Java位运算符
Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。
位运算符作用在所有的位上,并且按位运算。假设a = 60,b = 13;它们的二进制格式表示将如下:
1 | A = 0011 1100 |
下表列出了位运算符的基本运算,假设整数变量 A 的值为 60 和变量 B 的值为 13:
操作符 | 描述 | 例子 |
---|---|---|
& 按位与 | 如果相对应位都是1,则结果为1,否则为0 | (A&B),得到12,即0000 1100 |
| 按位或 | 如果相对应位都是 0,则结果为 0,否则为 1 | (A | B)得到61,即 0011 1101 |
^ 按位异或 | 如果相对应位值相同,则结果为0,否则为1 | (A ^ B)得到49,即 0011 0001 |
〜 | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 | (〜A)得到-61,即1100 0011 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | A << 2得到240,即 1111 0000 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | A >> 2得到15即 1111 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A>>>2得到15即0000 1111 |
1 |
|
运行结果
1 | a & b = 12 |
Kotlin 位运算
对于位运算,没有特殊字符来表示,而只可用中缀方式调用具名函数,例如:
1 | val x = (1 shl 2) and 0x000FF000 |
这是完整的位运算列表(只用于 Int
与 Long
):
shl(bits)
– 有符号左移shr(bits)
– 有符号右移ushr(bits)
– 无符号右移and(bits)
– 位与or(bits)
– 位或xor(bits)
– 位异或inv()
– 位非
https://www.kotlincn.net/docs/reference/basic-types.html#%E8%BF%90%E7%AE%97
https://juejin.cn/post/6844903841293402126
操作符优先级
https://www.cs.bilkent.edu.tr/~guvenir/courses/CS101/op_precedence.html
Operators
https://noteforme.github.io/2018/01/07/Operators/