网站权重为零,网站建设平台源码,wordpress 移动页面 自动跳转,php做网站用框架bitmap是很常见的算法设计#xff0c;例如用以Bloom Filter中#xff1b;用以无反复整数金额的排列这些。bitmap一般根据数组来完成#xff0c;数组中每一个原素能够当做是一系列二进制数#xff0c;全部元素组成更高的二进制结合。针对Python而言#xff0c;整数金额种类…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: utf8class 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 个原素。测算在数组中的数据库索引测算在数组中的数据库索引实际上是跟以前测算数组尺寸是一样的。只不过是以前是对最大值测算如今换为任一必须储存的整数金额。可是有一点不一样测算在数组中的数据库索引是向下取整因此 必须改动calcElemIndex方式的完成。编码改成以下编码以下:#!/usr/bin/env python#coding: utf8class Bitmap(object):def __init__(self, max):self.size self.calcElemIndex(max, True)self.array [0 for i in range(self.size)]def calcElemIndex(self, num, upFalse):”’up为True则为向上取整, 不然为向下取整”’if up:return int((num 31 – 1) / 31) #向上取整return num / 31if __name__ ‘__main__’:bitmap Bitmap(90)print ‘数组必须 %d 个原素。’ % bitmap.sizeprint ’47 应储存在第 %d 个数组原素上。’ % bitmap.calcElemIndex(47)编码以下:$ python bitmap.py数组必须 3 个原素。47 应储存在第 1 个数组原素上。因此 获得较大 整数金额很重要不然有可能建立的数组容下下不来一些数据信息。测算在数组原素中的位数据库索引数组原素中的位数据库索引能够根据取模运算来获得。令需储存的整数金额跟31牙模型就可以获得位数据库索引。编码改成以下编码以下:#!/usr/bin/env python#coding: utf8class Bitmap(object):def __init__(self, max):self.size self.calcElemIndex(max, True)self.array [0 for i in range(self.size)]def calcElemIndex(self, num, upFalse):”’up为True则为向上取整, 不然为向下取整”’if up:return int((num 31 – 1) / 31) #向上取整return num / 31def calcBitIndex(self, num):return num % 31if __name__ ‘__main__’:bitmap Bitmap(90)print ‘数组必须 %d 个原素。’ % bitmap.sizeprint ’47 应储存在第 %d 个数组原素上。’ % bitmap.calcElemIndex(47)print ’47 应储存在第 %d 个数组原素的第 %d 位上。’ % (bitmap.calcElemIndex(47), bitmap.calcBitIndex(47),)别忘记是以第0位算起哦。置1实际操作二进制位默认设置是0将某部位1则表明在这里位储存了数据信息。编码改成以下编码以下:#!/usr/bin/env python#coding: utf8class Bitmap(object):def __init__(self, max):self.size self.calcElemIndex(max, True)self.array [0 for i in range(self.size)]def calcElemIndex(self, num, upFalse):”’up为True则为向上取整, 不然为向下取整”’if up:return int((num 31 – 1) / 31) #向上取整return num / 31def calcBitIndex(self, num):return num % 31def set(self, num):elemIndex self.calcElemIndex(num)byteIndex self.calcBitIndex(num)elem self.array[elemIndex]self.array[elemIndex] elem | (1 byteIndex)if __name__ ‘__main__’:bitmap Bitmap(90)bitmap.set(0)print bitmap.array由于从第0位算起因此 如必须储存0则必须把第0部位1。清0实际操作将某部位0也即丢掉已储存的数据信息。编码以下编码以下:#!/usr/bin/env python#coding: utf8class Bitmap(object):def __init__(self, max):self.size self.calcElemIndex(max, True)self.array [0 for i in range(self.size)]def calcElemIndex(self, num, upFalse):”’up为True则为向上取整, 不然为向下取整”’if up:return int((num 31 – 1) / 31) #向上取整return num / 31def calcBitIndex(self, num):return num % 31def set(self, num):elemIndex self.calcElemIndex(num)byteIndex self.calcBitIndex(num)elem self.array[elemIndex]self.array[elemIndex] elem | (1 byteIndex)def clean(self, i):elemIndex self.calcElemIndex(i)byteIndex self.calcBitIndex(i)elem self.array[elemIndex]self.array[elemIndex] elem (~(1 byteIndex))if __name__ ‘__main__’:bitmap Bitmap(87)bitmap.set(0)bitmap.set(34)print bitmap.arraybitmap.clean(0)print bitmap.arraybitmap.clean(34)print bitmap.array清0和置1是互反实际操作。检测一位是不是为1分辨一位是不是为1是为了更好地取下以前所储存的数据信息。编码以下编码以下:#!/usr/bin/env python#coding: utf8class Bitmap(object):def __init__(self, max):self.size self.calcElemIndex(max, True)self.array [0 for i in range(self.size)]def calcElemIndex(self, num, upFalse):”’up为True则为向上取整, 不然为向下取整”’if up:return int((num 31 – 1) / 31) #向上取整return num / 31def calcBitIndex(self, num):return num % 31def set(self, num):elemIndex self.calcElemIndex(num)byteIndex self.calcBitIndex(num)elem self.array[elemIndex]self.array[elemIndex] elem | (1 byteIndex)def clean(self, i):elemIndex self.calcElemIndex(i)byteIndex self.calcBitIndex(i)elem self.array[elemIndex]self.array[elemIndex] elem (~(1 byteIndex))def test(self, i):elemIndex self.calcElemIndex(i)byteIndex self.calcBitIndex(i)if self.array[elemIndex] (1 byteIndex):return Truereturn False文章内容来源于:www.seo-7.comwww.sEo-6.comhttp://www.seo-6.com/seoyh/seojichurm/118357.html(编辑部分内容来互联网)