《Redis设计与实现》第二十二章总结:二进制位数组

本文深入解析Redis中的二进制位数组,涵盖GETBIT的O(1)实现、SETBIT的高效写入、BITCOUNT的多种算法(遍历、查表、variable-precision SWAR)及其Redis实际应用,以及BITOP命令的C语言实现。通过对位数组的操作,理解Redis如何高效处理位操作。
摘要由CSDN通过智能技术生成

22 二进制位数组

22.1 位数组的表示

使用SDS来保存位数组

例子:一字节长的位数组
在这里插入图片描述
每个字节使用一行来表示,所以改造如下:
在这里插入图片描述
位是逆序保存的,10110010代表保存的位数组位01001101,即从左到右是低位到高位;
其作用是可以简化SETBIT命令的实现

22.2 GETBIT命令的实现

GETBIT <bitarray> <offset>

用于返回位数组bitarray在offset偏移量上的二进制位的值

原理:
在这里插入图片描述
时间复杂度:O(1)

例子:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值