一. 位运算符
1.1.常用:
1.1.1 & 按位与运算符 0&1 = 0 1&0= 0 0&0 = 0 1&1 = 1
println("0 & 1 =" + (0 & 1))
println("1 & 0 =" + (1 & 0))
println("0 & 0 =" + (0 & 0))
println("1 & 1 =" + (1 & 1))
1.1.2. | 按位或运算符 0|1 = 1 1|0= 1 0|0 = 0 1|1 = 1
println("0 | 1 =" + (0 | 1))
println("1 | 0 =" + (1 | 0))
println("0 | 0 =" + (0 | 0))
println("1 | 1 =" + (1 | 1))
1.1.3. ^ 按位异或运算符。0^1 = 1, 1^1= 0 0^0 = 0
println("0 ^ 1 =" + (0 ^ 1))
println("1 ^ 1 =" + (1 ^ 1))
println("0 ^ 0 =" + (0 ^ 0))
1.2. ~ 按位取反运算符
1.2.1. << 左移运算符 右边补零 放大
1.2.2. >> 右移运算符 左边补零 缩小
1.2.3. << 左移运算符 右边补零 放大
1.2.4. >> 右移运算符 左边补零 缩小
1.3.综合练习:
println("5 & 4 =" + (5&4))
println("5 | 4 =" + (5 | 4))
println("5 ^ 4 =" + (5 ^ 4))
println("4 >> 2 =" + (4 >> 2))
println("4 << 2 =" + (4 << 2))
二. 优先级
2.1. 乘除模 > 加减
2.2. 算术 > 关系 > 赋值
2.3. && > ||
2.4. 练习
val result = 10-2+3*4/2
println(result)
val a = true
val b = false
val c = false
println(a || b && c)
println(a || (b && c))
println((a || b) && c)
三. 自增 自减
3.1. 在Scala中没有++和--这样的自增和自减运算符 要想在Scala中实现类似于Java中的自增和自减运算 可以使用如下的赋值运算符进行替代。
3.2. ++:用赋值运算符 +=1代替++。
3.3.--:用赋值运算符 -=1代替--。
四. 浮点数精度
val a = 0.1
val b = 0.2
val c = 0.3
println(a+b==c)
println(BigDecimal(a)+BigDecimal(b)==BigDecimal(c))
五. 大数
val a = 2147483647
val b = 1
print(a+b)
var c = (a+b)/2
var d = a-(a-b)/2
println(c)
println(d)
var a1 = BigInt("123456789012345678901234567890")
var b1 = BigInt("987654321098765432109876543210")
println(a1+b1)
println(a1*b1)