概述
网上有很多关于bitmap的文章,这里就不阐述原理,分享一个?(go)小白写的一个bitmap排序算法。
代码
package main
import (
"fmt"
)
type Bitmap struct {
// bit 数据
data []byte
// bit 容量,data长度*8,一个byte==8bit
bitsize uint64
// Bitmap 为 1 的最大位置(方便遍历)
maxpos uint64
}
//设置offset对应位置为1
func (this *Bitmap) SetBit(offset uint64) bool {
index, pos := offset/8, offset%8
if this.bitsize < offset {
return false
}
// 或|运算 0|1 = 1
this.data[index