当前位置: 首页> 房产> 政策 > 公司注册代办北京_中文网站什么意思_郑州seo顾问热狗_站长之家是什么网站

公司注册代办北京_中文网站什么意思_郑州seo顾问热狗_站长之家是什么网站

时间:2025/7/13 4:32:58来源:https://blog.csdn.net/xxb249/article/details/144489462 浏览次数:0次
公司注册代办北京_中文网站什么意思_郑州seo顾问热狗_站长之家是什么网站

一个初始化bitmap小算法

  • 根据长度,创建bitmap
    • 初始化bitmap

根据长度,创建bitmap

看到一个开源项目,利用bitmap存储数据,其中创建和初始化过程,比较经典。这里摘录出来,以备后续使用。代码采用的是golang

//数据结构
type bitmap struct {a       []uint64bitsLen int
}
// 入参是数据实际长度
func (bm *bitmap) init(bitsLen int) {a := bm.a//一个long是8字节(64bit),  通过长度bitlen计算出需要多少bit,向上取整//在网络编程中,经常是4字节、8字节对齐,其实是一样的道理wordsLen := (bitsLen + 63) / 64 a = slicesutil.SetLength(a, wordsLen)bm.a = abm.bitsLen = bitsLen
}

初始化bitmap

func (bm *bitmap) setBits() {a := bm.a// 把bit位全部设置为1,即设置成-1, 因为是无符号的,-1就是最大值for i := range a {a[i] = ^uint64(0)}// 这个地方,模除,实际上计算出多余的,不需要的bit位tailBits := bm.bitsLen % 64// 将多余不需要使用的bit位设置成0if tailBits > 0 && len(a) > 0 { //将末尾用不到的bitmap,设置成0// Zero bits outside bitsLen at the last worda[len(a)-1] &= (uint64(1) << tailBits) - 1}
}
关键字:公司注册代办北京_中文网站什么意思_郑州seo顾问热狗_站长之家是什么网站

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: