茶楼网站,网站psd设计稿,郑州 手机网站,网站备案过期BitMap的原理不用多说了。主要说下位操作。我们假设每个基础存储单元为char#xff0c;则BYTESIZE 8#xff0c;如果为int则16 or 32。当设置i时#xff0c;首先ptri/BYTESIZE#xff0c;到达要操作的那个char。然后对*ptr | 0x01检查的时候#xff0c;也是首先ptri/…BitMap的原理不用多说了。主要说下位操作。我们假设每个基础存储单元为char则BYTESIZE 8如果为int则16 or 32。当设置i时首先ptri/BYTESIZE到达要操作的那个char。然后对*ptr | 0x01检查的时候也是首先ptri/BYTESIZE然后查 (*ptr0x01上面这个0x01代码如下#include #include #include #define BYTES 1024#define BYTESIZE 8char buffer[BYTES];char pre[8] {0x010, 0x011, 0x012, 0x013, 0x014, 0x015, 0x016, 0x017};void bitmap_init(char* buf, int n){memset(buf, 0, sizeof(char)*n);}void bitmap_set(char* buf, int n, int i){int add i/BYTESIZE;int pos i%BYTESIZE;if(addn){return ;}buf add;*buf | pre[pos]; //*buf | (0x01}int bitmap_check(char* buf, int n, int i){int add i/BYTESIZE;int pos i%BYTESIZE;if(addn){return 0;}buf add;return (*bufpre[pos])pre[pos]; // return (*ptr0x01}void bitmap_print(char* buf, int n){int i;int j;char bs[BYTESIZE];for(i0;i{bs[i] 0x01}for(i0;i{for(j0;j{if((*bufbs[j])bs[j]){printf(%d\n, i*BYTESIZEj);}}buf;}}int main(){bitmap_init(buffer, BYTES);bitmap_set(buffer, BYTES, 999);printf(%d\n, bitmap_check(buffer, BYTES, 999));printf(%d\n, bitmap_check(buffer, BYTES, 998));bitmap_print(buffer, BYTES);return 0;}