bitmap算法

1、位图是一种非常常用的结构,在数据压缩方面有广泛应用;

 

2、如下图,假设是一个整型数据在内存中占用的的32位,从低位到高位,每一位分别对应十进制数字0~31,每bit上值为0或1,表示对应十进制数字是够存在;

 

3、

优点:效率高,占用内存少;

缺点:无法对存在重复的数据进行排序或者查找,但是也可以有2bitmap。

 

4、如何将十进制转换为对应的bit位?(仅考虑无符号整数)

①、首先求其在整型数组中的index,我们知道 a[0]对应0~31, a[1]对应32~63,...。所以,假设十进制数N,对应数组下标为index = N / 32 即可;

②、然后,寻找其对应数组中整数的哪一位?bitLoc = N % 32;

③、利用对a[i]进行移位操作,判断相应为是0或1,从而判断相应整数是否存在。

 

5、拓展:也可以利用2bit对应一个整数,这样00,01,10,11四中情况就可以表示多种情况。

posted on 2017-03-06 22:59  阳小徐  阅读(179)  评论(0编辑  收藏  举报