本文共 1229 字,大约阅读时间需要 4 分钟。
再举一个例子
存入的数字为8988 首先: 8988/32 = 280 其次: 8988%32 = 28再来一个例子
存入的数字16 首先: 16/32 = 0 其次: 16%32=16#include#include "BitMap.h"int main(){ BitMap bm; BMInit(&bm,100000); int i, j; // 插入数据 for (i = 0; i < 100000; i++) { BMSetOne(&bm, i); } // 判断数字是否在位图里面 for (j = 990; j < 100010; j++) { if (BMTestOne(&bm, j) != 0) { printf("数字 %d存在于位图, 返回值: %d\n", j, BMTestOne(&bm, j)); } else { printf("数字 %d不存在于位图, 返回值: %d\n", j, BMTestOne(&bm, j)); } } return 0;}
数字 99993存在于位图, 返回值: 33554432数字 99994存在于位图, 返回值: 67108864数字 99995存在于位图, 返回值: 134217728数字 99996存在于位图, 返回值: 268435456数字 99997存在于位图, 返回值: 536870912数字 99998存在于位图, 返回值: 1073741824数字 99999存在于位图, 返回值: -2147483648数字 100000不存在于位图, 返回值: 0数字 100001不存在于位图, 返回值: 0数字 100002不存在于位图, 返回值: 0数字 100003不存在于位图, 返回值: 0数字 100004不存在于位图, 返回值: 0数字 100005不存在于位图, 返回值: 0数字 100006不存在于位图, 返回值: 0数字 100007不存在于位图, 返回值: 0数字 100008不存在于位图, 返回值: 0数字 100009不存在于位图, 返回值: 0
位图占用的空间大小
unsignedint 的取值范围是0到2^32-1=4 294 967 296-1(大约40亿) 申请了约2^32/8=512M的内存转载地址:http://coorb.baihongyu.com/