在Ruby中使用插入符号(^)

sha*_*jin 24 ruby operators caret

1 ^ 1
# => 0

1 ^ 2
# => 3

5 ^ 6
# => 3
Run Code Online (Sandbox Code Playgroud)

这些是我得到的结果.请问,有人解释一下^有效吗?

Raf*_*ler 33

它是一个按位XOR运算符.

对于操作数的二进制表示中的每个位,如果操作数中的相应位之一为1,则按位XOR将获得1位,但不是两者,否则XOR将获得0位.这是一个例子:

5     = 101
6     = 110
5 ^ 6 = 011 = 3
Run Code Online (Sandbox Code Playgroud)

  • 可以把它想象成逻辑运算中的等价物:`(a || b)&&!(a && b)` (2认同)
  • 异或:其中之一,而不是两者 (2认同)