Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <errno.h>
- unsigned char *bitmapinit(int n);
- unsigned char chkbit(unsigned char *map, int n);
- void setbit(unsigned char *map, int n);
- void unsetbit(unsigned char *map, int n);
- unsigned char mask[8] = {1,2,4,8,16,32,64,128};
- int main(int argc, char *argv[])
- {
- int i;
- unsigned char *bitmap = bitmapinit(1000);
- if (!bitmap) {
- perror("malloc: ");
- exit(EXIT_FAILURE);
- }
- for (i = 0; i < 50; i++) {
- setbit(bitmap, i);
- }
- for (i = 0; i < 50; i += 5) {
- unsetbit(bitmap, i);
- }
- for (i = 0; i < 50; i++) {
- printf("bit #%d = %d\n", i, (chkbit(bitmap, i))?1:0);
- }
- return 0;
- }
- unsigned char *bitmapinit(int n)
- {
- return (unsigned char *)calloc(sizeof(unsigned char), n / 8 + 1);
- }
- unsigned char chkbit(unsigned char *map, int n)
- {
- return (unsigned char)map[n / 8] & mask[n % 8];
- }
- void setbit(unsigned char *map, int n)
- {
- map[n / 8] = map[n / 8] | mask[n % 8];
- }
- void unsetbit(unsigned char *map, int n)
- {
- map[n / 8] = map[n / 8] & ~(mask[n % 8]);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement