bitmap(位图)

1.什么是位图?

来自于《编程珠玑》。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。

比如:
申请一个int型的空间,则有4Byte,32bit。输入1,2 , 3 ,4
0000 0000 0000 0000 0000 0000 0000 0000
输入1
0000 0000 0000 0000 0000 0000 0000 0010
输入2
0000 0000 0000 0000 0000 0000 0000 0110
输入3
0000 0000 0000 0000 0000 0000 0000 1110
输入4
0000 0000 0000 0000 0000 0000 0001 1110

2.map映射表

假设需要排序或者查找的范围0~1000,那么我们需要申请的内存空间为 int a[N/32 + 1].其中a[0]在内存中占32位,依此类推:
bitmap表为:
a[0] 0~31
a[1] 32~63
a[2] 64~95
a[3] 96~127

3.位移转换

(1) 求十进制数0-N对应的在数组a中的下标
index= N / 32即可,index即为n对应的数组下标。

(2)求十进制数0-N对应的bit位
pos = N % 32即可

(3)利用移位0-31使得对应的32bit位为1

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值