Python之位运算实现整数集合

让为运算和整数集合联系起来,牛掰而又有趣的操作,拜服能够将二者联系起来的前辈。废话不多说了,我将尽力将描述,以求大家能够更好的运用。

1 一个例子

一个数的二进制表示可以看作是一个集合(0 表示不在集合中,1 表示在集合中)。那么这是如何实现的呢?我们以一个集合{1,5,6,8} 为例进行说明,其对应用二进制表示为:01 01 10 00 10。用表格进行理解即为:

在这里插入图片描述
就是哪个整数在集合中,那么数字对应大小的二进制所在的位的值就为1。
这样表示有什么好处呢?能够用来做什么?

2 应用

2.1 从集合中插入、删除、判断某元素是否在集合中

插入:
假设原集合a为{1, 5, 6, 8},其对应的二进制可以表示为01 01 10 00 10:我们想在原集合中插入一个数字2,那么在python中可以用下面代码进行实现:

a = 0b0101100010
b = a | (1<<2)   #把2插入到集合中
print(bin(b))    #0b101100110

我们可以发现插入数字2就是将二进制对应序号为2的位置的值置为1,表示该集合中有一个值为2的整数。

删除:
假定我们把上面得到的集合b{1 ,2 ,5 ,6 ,8}中的元素5从集合中删除。可以用下面代码进行实现:

a = 0b0101100010
b = a | (1<<2)   #把2插入到集合中
print(bin(b))    #0b101100110
c = b & ~(1<<5)  #把5从集合中删除
print(bin
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值