【问题标题】:Whats the difference between + and | when adding to another variable? [duplicate]+ 和 | 有什么区别?添加到另一个变量时? [复制]
【发布时间】:2021-04-19 13:21:29
【问题描述】:

考虑以下

>>> a = 10
>>> b = 5

使用+ 或| 将值添加到c 有什么区别?

>>> c = a + b
>>> c
15
>>> c = a | b
>>> c
15

我根据this answer 提出这个问题,其中使用了二进制和按位运算,如果这有什么不同的话。

从上面链接的答案:

>>> mon, tue, wed, thu, fri, sat, sun = (pow(2, i) for i in range(7)) 
>>> bin(mon) '0b1'
>>> bin(sun) '0b1000000'

# create range:
>>> x = mon | wed | fri
>>> bin(x) '0b10101'

# check if day is in range:
>>> x & mon
1
>>> x & tue
0

【问题讨论】:

  • 在a 和b 没有重叠位的情况下,什么都没有。 5 是 0101 和 10 是 1010,所以按位或和数字加法相等; 15 是 1111。
  • 试试10 | 6,你会得到14。仅在特殊情况下,这两者的结果相等。
  • 为什么会使用|?搜索 | 符号时我找不到任何东西。还是可以和python中的+互换?
  • 刚刚给你一个例子,a + b != a | b。为什么您认为它们可以互换?
  • @chepner 巧合的是,我使用的示例碰巧在每种情况下都导致 15,这引起了我的困惑。我没有看到第二条评论,但答案清楚了

标签: python


【解决方案1】:

嗯,一个是对数字的二进制表示的“或”运算——这就是“|”运算符。

另一个是+,将两个数字相加(在本例中为整数)。

恰好 10 和 5 的“或”运算是:

5 = 00101

10= 01010

所以按位或得到你:11111 是 15

如果你做 10 + 6,你会得到 16。但是,10 | 7 为您提供二进制 11111 也是 15... `.

【讨论】:

  • 感谢您的解释,巧合的是,两种情况下的结果都是 15,这增加了我的困惑
【解决方案2】:

为了知道+和|的区别最好在一开始就考虑变量中的相同值。

a = b = 5
print(a + b)
# result is 10
print(a | b)
# result is 5

所以在第一个中,这是一个普通的加法运算,但在第二个中,它是一个按位的OR 运算。

二进制中的5是101

所以a | b = 101 or 101 = 101 = 5 十进制

如果我们将b = 2 设为二进制,则b = 10

所以,a | b = 101 or 010 = 111 = 7 十进制

【讨论】:

  • 这很有意义。真的把事情弄清楚了。谢谢你的解释
猜你喜欢
  • 2016-06-13
  • 2022-01-06
  • 1970-01-01
  • 2015-05-19
  • 2020-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
相关资源
最近更新 更多