python 32bit数据结构_python实现bitmap数据结构详解

bitmap是很常见的算法设计,例如用以Bloom Filter中;用以无反复整数金额的排列这些。bitmap一般根据数组来完成,数组中每一个原素能够当做是一系列二进制数,全部元素组成更高的二进制结合。针对Python而言,整数金额种类默认设置是有标记种类,因此 一个整数金额的能用十位数为31位。

bitmap完成构思

bitmap是用以对每一位开展实际操作。举例来说,一个Python数组包括4个32位系统有标记整形,则一共能用位为4 * 31 = 124位。假如要在第90个二进制位上实际操作,则要先获得到实际操作数组的第几个原素,再获得相对的位数据库索引,随后实行实际操作。

图中所显示为一个32位系统整形,在Python中默认设置是有标记种类,最大位为标记位,bitmap不可以应用它。左侧是上位,右侧是底位,最少位为第0位。

bitmap是用以对每一位开展实际操作。举例来说,一个Python数组包括4个32位系统有标记整形,则一共能用位为4 * 31 = 124位。假如要在第90个二进制位上实际操作,则要先获得到实际操作数组的第几个原素,再获得相对的位数据库索引,随后实行实际操作。

复位bitmap

最先必须复位bitmap。拿90这一整数金额而言,由于单独整形只有应用31位,因此 90除于31并向上取整则可获知必须好多个数组原素。编码以下:

编码以下:

#!/usr/bin/env python

#coding: utf8

class Bitmap(object):

def __init__(self, max):

self.size = int((max 31 – 1) / 31) #向上取整

if __name__ == ‘__main__’:

bitmap = Bitmap(90)

print ‘必须 %d 个原素。’ % bitmap.size

编码以下:

$ python bitmap.py

必须 3 个原素。

测算在数组中的数据库索引

测算在数组中的数据库索引实际上是跟以前测算数组尺寸是一样的。只不过是以前是对最大值测算,如今换为任一必须储存的整数金额。可是有一点不一样&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值