找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2019|回复: 3

[求助] and 和 & 二进制数比较中的区别;difference between 'and' and '&'

1

主题

2

帖子

2

积分

贫民

积分
2
guccarlos 发表于 2019-11-5 07:24:28 | 显示全部楼层 |阅读模式
请教高人能帮忙解释下 and 和 & 在二进制数 比较中的区别吗? 似乎二进制数不能用 and 和 or, 但我实在不理解结果的逻辑。10进制数两个结果没有区别。


a=0b001
b=0b010

print(a and b)
print(a or b)
print(a & b)
print(a | b)

结果:2103

回复

使用道具 举报

1

主题

2

帖子

2

积分

贫民

积分
2
guccarlos  楼主| 发表于 2019-11-5 07:28:05 | 显示全部楼层
上面的结果依次是
2
1
0
3
不理解2 和1 是怎么判断出来的。
回复 支持 反对

使用道具 举报

0

主题

15

帖子

15

积分

贫民

积分
15
wwhywhy 发表于 2019-11-12 19:55:38 | 显示全部楼层
本帖最后由 wwhywhy 于 2019-11-12 19:57 编辑

x and y:只有x为真,才会计算y。这里x = 1 为真,需要计算y的值( = 2), 所以结果为2
x or y : 只有x为假,才会计算y。这里x = 1, 为真,不用计算y,结果为1(x的值)
回复 支持 反对

使用道具 举报

0

主题

102

帖子

102

积分

侠客

积分
102
傻眼貓咪 发表于 2021-8-6 14:02:00 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-8-6 14:11 编辑
  1. a = 0b000
  2. b = 0b000
  3. c = {1, 2, 3, 4}
  4. d = {3, 4, 5, 6, 7}

  5. # ------------------------------------ 布爾值邏輯比如: and or not 和 in 等 ------------------------------------
  6. # 如上面,負整數和正整數為真(True),只有0為假(False)
  7. print(a and b) # 如果兩方都為真 (True),則真 (True);否則為假 (False)
  8. print(a or b) # 其中一方為真 (True),則真 (True);如果兩方都為假 (False),則假 (False)

  9. # ---------------------------------- 二進制 (binary) 運算符比如: & | >> ~ << ----------------------------------
  10. print(a & b) # 0b001 & 0b010 = 0b000
  11. print(a | b) # 0b001 & 0b010 = 0b011

  12. # & 就是按位邏輯裡面的 AND
  13. # | 就是按位邏輯裡面的 OR
  14. #  1為真,0為假,假設同為真,則真;否則為假

  15. #    二進制
  16. #    0 0 1
  17. #  & 0 1 0
  18. #    0 0 0 (最終運算結果)

  19. #    二進制
  20. #    0 0 1
  21. #  | 0 1 0
  22. #    0 1 1 (最終運算結果)

  23. # ------------------------------------ 集 (set) 的邏輯符比如: & | ^ 等 ------------------------------------
  24. print(c & d) # 交集 (Intersection)
  25. print(c | d) # 聯集 (Union)
  26. print(c ^ d) # 對稱差 (Symmetric difference)
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表