了解 | scala中的运算符
Understanding the | operator in scala
我来打码了:
scala> val a = 0 | 1
a: Int = 1
scala> val a = 0 | 1 | 2
a: Int = 3
scala> val a = 0 | 1 | 2 | 3
a: Int = 3
scala> val a = 0 | 1 | 2 | 3 | 4
a: Int = 7
这是我期望的唯一结果 |运算符是第一个命令的结果。
我看到它的行为类似于逻辑 or 并且它还在第二个命令中添加了元素。
有人可以解释一下 | 的工作原理吗?运算符使用整数作为运算符?
只是整数值的二进制表示的每一位之间的逻辑or
(1 or 1 = 1, 1 or 0 = 1, 0 or 1 = 1, 0 or 0 = 0)
val a = 0 | 1
//0 or 1 = 1 (1 - decimal number)
val a = 0 | 1 | 2
//00 or 01 or 10 = 11 (3 - decimal number)
val a = 0 | 1 | 2 | 3
//00 or 01 or 10 or 11 = 11 (3 - decimal number)
val a = 0 | 1 | 2 | 3 | 4
//000 or 001 or 010 or 011 or 100 = 111 (7 - decimal number)
|
是 bitwise OR 运算符:
val a = 0 | 1
a: Int = 1
00 0
01 1
-----
01 1
val a = 0 | 1 | 2 | 3
a: Int = 3
00 0
01 1
10 2
11 3
------
11 3
val a = 0 | 1 | 2 | 3 | 4
a: Int = 7
000 0
001 1
010 2
011 3
100 4
-------
111 7
我来打码了:
scala> val a = 0 | 1
a: Int = 1
scala> val a = 0 | 1 | 2
a: Int = 3
scala> val a = 0 | 1 | 2 | 3
a: Int = 3
scala> val a = 0 | 1 | 2 | 3 | 4
a: Int = 7
这是我期望的唯一结果 |运算符是第一个命令的结果。 我看到它的行为类似于逻辑 or 并且它还在第二个命令中添加了元素。
有人可以解释一下 | 的工作原理吗?运算符使用整数作为运算符?
只是整数值的二进制表示的每一位之间的逻辑or
(1 or 1 = 1, 1 or 0 = 1, 0 or 1 = 1, 0 or 0 = 0)
val a = 0 | 1
//0 or 1 = 1 (1 - decimal number)
val a = 0 | 1 | 2
//00 or 01 or 10 = 11 (3 - decimal number)
val a = 0 | 1 | 2 | 3
//00 or 01 or 10 or 11 = 11 (3 - decimal number)
val a = 0 | 1 | 2 | 3 | 4
//000 or 001 or 010 or 011 or 100 = 111 (7 - decimal number)
|
是 bitwise OR 运算符:
val a = 0 | 1
a: Int = 1
00 0
01 1
-----
01 1
val a = 0 | 1 | 2 | 3
a: Int = 3
00 0
01 1
10 2
11 3
------
11 3
val a = 0 | 1 | 2 | 3 | 4
a: Int = 7
000 0
001 1
010 2
011 3
100 4
-------
111 7