位运算
对于位运算,没有特殊字符来表示,而且只适用中缀方式调用命名函数
val x = (1shl 2) and 0x000FF000
完整的位运算列表(只用于Int和Long)
shl(bits) - 有符号左移(Java 的 <<)
shr(bits) - 有符号右移(Java的>>)
ushr(bits) -无符号右移(Java的>>>)
and(bits) - 位与
or(bit) - 位或
xor(bit) - 位异或
inv() - 位非
字符串模板
字符串可以包含模板表达式,它通常以($)开头,由一个简单的名字构成,当我们想将值加进代码,可以通过这种方式合并到字符串中
val i = 10
val s ="i = $i" //求值结果位 "i = 10"
Java中>>和>>>的区别
>>:带符号右移。正数右移高位补0,负数右移高位补1。比如:4>>1,结果是2。-4>>1,结果是-2。 -2>>1,结果是-1。
>>>:无符号右移。无论是正数还是负数,高位通通补0。
对于正数而言,>>和>>>没区别
对于负数而言,-2>>>1,结果是2147483647(Integer.MAX_VALUE),-1>>>1,结果是2147483647(Integer.MAX_VALUE)。
所以,要判断两个数符号是否相同时,return ((a>>31)^(b>>31))==0