C语言实现BitMap

BitMap的原理不用多说了。

主要说下位操作。

我们假设每个基础存储单元为char,则BYTESIZE = 8,如果为int则16 or 32。

当设置i时,首先ptr+=i/BYTESIZE,到达要操作的那个char。

然后对*ptr |= 0x01<<(i%BYTESIZE)即可。这里在同一个机器上,可以忽略大小端的问题。

检查的时候,也是首先ptr+=i/BYTESIZE,然后查 (*ptr&0x01<<(i%BYTESIZE)) == 0x01<<(i%BYTESIZE)即可。

上面这个0x01<<…实际上…就是0~7,因此我们可以预定义一个数组pre,防止重复计算。

代码如下:

Leave a Reply

Your email address will not be published.