在数据库学习与试用当中会遇到一个概念“位图索引”,这是位图在索引检索中的一个应用案例。现在对位图的基本原来进行下学习。原理其实很简单,主要搞清楚一些基本概念。
先说一下基本的概念:bit,byte,word。
bit 位
byte 字节
word 字
字长是指字的长度
关系如下:
1字=2字节(1 word = 2 byte)
1字节=8位(1 byte = 8bit)
1 Byte = 8 Bits
1 KB = 1024 Bytes
1 MB = 1024 KB
1 GB = 1024 MB
二进制是用0和1来表示数据,位图根据0和1来存储对应的数据,应为是采用bit来存储,所以可以大大节省数据的存储空间,并具备排序特性。
举例:将一组数据进行排序。
数组:(1,31,53,41,79,201)
1:首先在内存中开辟一段空间
创建字符数组 bitmap[26](数字最大数201,26*8=208)
2:遍历字符数组的每位,设置 0 或者 1
通过设置0 或者 1 来判断这个值是否存在。1表示存在。
比如:31
则需要对bitmap[3]的第7位进行设置为1.(3*8 + 7=31)如下:
0 0 0 0 0 0 1 0
再如:1
则需要对bitmap[0]的第1位进行设置为1.(0*8 + 1=1)如下:
1 0 0 0 0 0 0 0
3:完成之后,遍历每个位,输出为1对应的值,即可得到排序后的数组。
(1,31,41,53,79,201)
原文地址:http://blog.csdn.net/zhangbiaobiaobiao/article/details/45792533