查看: 537| 回复: 4
跳转到指定楼层
上一主题 下一主题
收起左侧

Python的一个问题

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x

搞不懂python里的bitwise operator。哪位给讲讲下面这个例子,谢谢!

x = 4
y = 1
a = x & y
b = x | y
c = ~x
d = x ^ 5
e = x >> 2
f = x << 2
print(a, b, c, d, e, f)

output:
0 5 -5 1 1 16



上一篇:2022 Leetcode讲题组队
下一篇:找小伙伴一起mock interview
全局:
就是位运算吧,4是100,1是001,所以4&1是000,4|1是101也就是5,^是异或,4^1就是101也是5,<<和>>是左移和右移4<<2就是10000也就是16,其实左移一位就是乘2,右移一位就是除2,这些都不是python独有的,c和java都是相同的运算符和规则

补充内容 (2021-11-08 09:36 +08:00):
~c是对x的每位二进制bit取反,这个符号可能是python特有的,我不确定,比如x是个四位整数4,那就是0100,取反就是1011,如果是signed int这就是个负数,也就是-8+3=-5,一般对于signed int有x+~x = -1的规则,因为x和~x互反,他们的和就刚好是111…111,也就是-1
回复

使用道具 举报

🔗
 楼主| wx2123 2021-12-23 01:55:44 | 只看该作者
全局:
idealmaster 发表于 2021-11-7 20:32
就是位运算吧,4是100,1是001,所以4&1是000,4|1是101也就是5,^是异或,4^1就是101也是5,是左移和右移4

多谢解释。这些运算符必有作用,虽然我一时还不不知道它们能干啥 :)
回复

使用道具 举报

全局:
wx2123 发表于 2021-12-22 09:55:44
多谢解释。这些运算符必有作用,虽然我一时还不不知道它们能干啥 :)
日常应用就是可以替代*2,/2和2^n,其实加减乘除底层我都是通过位运算实现的,再高阶点的就有bitmask,由此延伸出枚举子集,状压dp和fenwick tree
回复

使用道具 举报

🔗
 楼主| wx2123 2021-12-23 05:16:29 | 只看该作者
全局:
idealmaster 发表于 2021-12-22 16:00
日常应用就是可以替代*2,/2和2^n,其实加减乘除底层我都是通过位运算实现的,再高阶点的就有bitmask,由 ...

对,我也看到bitmask。目前还处在lost 状态。需要慢慢体会。:)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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