Kotlin学习快速入门(12)—— 位运算符
由于不懂pythod,最近拜托朋友研究下解密live2d模型的解密算法,朋友写出了Java的代码
之后我进行改版,在转为kotlin的时候,发现kotlin自动转换有些坑,以及kotlin中的位运算符优先级似乎和Java中不是相同的,特此记录下相关的资料
Java | Kotlin | 说明 |
---|---|---|
~a |
a.inv | 非 |
a&b | a.and(b) | 与 |
a|b | a.or(b) | 或 |
a^b | a.xor(b) | 异或 |
a<<b | a.shl(b) | 左移b位 |
a>>b | a.shr(b) | 右移b位 |
a>>>b | a.ushr(b) | 无符号右移b位 |
~另外,对于 <<= 、>>= 、>>>= 这三个操作,Kotlin中没有对应的函数
优先级:
优先级 | 运算符 | 结合性 |
---|---|---|
1 | ()、[]、. | 从左向右 |
2 | !、~、++、-- | 从右向左 |
3 | *、/、% | 从左向右 |
4 | +、- | 从左向右 |
5 | <<、>>、>>> | 从左向右 |
6 | <、<=、>、>=、instanceof | 从左向右 |
7 | ==、!= | 从左向右 |
8 | & | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右向左 |
14 | =、+=、-=、*=、/=、%=、|=、^=、~=、<<=、>>=、>>>= | 从右向左 |