【问题标题】:Understanding the | operator in scala [duplicate]了解 | scala中的运算符[重复]
【发布时间】:2019-10-11 02:39:34
【问题描述】:

我是来打码的:

 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

我期望的唯一结果 |运算符是第一个命令的结果。 我看到它的行为类似于逻辑,或者它还在第二个命令中添加了元素。

有人能解释一下 | 的工作原理吗?使用整数作为运算符的运算符?

【问题讨论】:

    标签: scala bitwise-operators logical-operators


    【解决方案1】:

    这只是整数值的二进制表示的每一位之间的逻辑or(1 或 1 = 1、1 或 0 = 1、0 或 1 = 1、0 或 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)
    

    【讨论】:

      【解决方案2】:

      |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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-31
        • 1970-01-01
        • 2015-08-22
        • 2016-03-19
        • 1970-01-01
        • 2013-12-20
        • 1970-01-01
        相关资源
        最近更新 更多