首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C#中BitArray

C#中BitArray类 简介 BitArray类用于以紧凑的方式表示"位的集合"(sets of bits)....9、BitArrayBitArray类用来处理位的集合. 位的集合可以用来有效地表示Boolean(布尔)值的集合....BitArray和ArrayList十分类似, 可以动态地调整元素数量, 所以需要添加二进制位时不用担心数组越界的问题. 9.1、使用BitArray类 通过实例化BitArray就可以创建BitArray...对象, 同时也可以通过构造函数指定二进制位的数量: BitArray BitSet = new BitArray(32); 以上写法会使BitArray的32 个位都设置为false....你可以通过And, Or, Xor以及Not方法, 用另一个BitArray对象当前BitArray对象进行按位操作, 从而改变当前BitArray的值, 比如说, 要用bitSet2对bitSet1进行按位

1.1K30
您找到你想要的搜索结果了吗?
是的
没有找到

数学之美:布隆过滤器

如上图bitarray所示!bitarray也叫bitmap,大小也就是布隆过滤器的大小。...等判断时,将输入对象经过这k个哈希函数计算得到k个值,然后判断对应bitarray的k个位置是否都为1(是否标黑),如果有一个不为黑,那么这个输入对象则不在这个集合中,也就不是黑名单了!...如果都是黑,那说明在集合中,但有可能会误,由于当输入对象过多,而集合也就是bitarray过小,则会出现大部分为黑的情况,那样就容易发生误判!因此使用布隆过滤器是需要容忍错误率的,即使很低很低!...布隆过滤器重要参数计算 通过上面的描述,我们可以知道,如果输入量过大,而bitarray空间的大小又很小,那么误判率就会上升。那么bitarray空间大小怎么确定呢?...哈哈,直接用~ 假设输入对象个数为n,bitarray大小(也就是布隆过滤器大小)为m,所容忍的误判率p和哈希函数的个数k。计算公式如下:(小数向上取整) ?

1.4K10

《Redis设计与实现》读书笔记(三十五) ——Redis 二进制位数组及SWAR汉明重量算法

三、getbit实现 getbit返回位于数组bitarray的offset偏移量的值,命令即getbit 。...例如对于某个二进制数组,getbit 10: ? getbit所有操作都可以在常数时间完成,时间复杂度是O(1)。...四、setbit实现 1、普通setbit setbit设置位于数组bitarray的offset偏移量的值为value,命令即setbit 。...例如,现有是1个字节,执行setbit 12 1,则算出byte=12/8取整,值是1,但是当前不存在buf[1],则redis会新开辟空间。...4)步骤4 i * (0x01010101) 计算出的是bitarray的汉明重量,并记录在二进制位的最高八位。通过>>24右移运算,将汉明重量移动到最低八位。得到的结果就是最终的结果。

1.3K40
领券