17 #include <sys/types.h> 
   21 #define MAX_NUMS  ((INT_MAX >> 5) + 1)   
   31 int main(
int argc, 
char** argv)
 
   33    const char* usage = 
"usage: %s filename\n";
 
   37    static unsigned int have_num[
MAX_NUMS];
 
   46    assert(
sizeof(
int) == 4);
 
   52       fprintf(stderr, usage, argv[0]);
 
   55    memset(have_num, 0, 
sizeof(have_num)); 
 
   59    if (0 > (fd = open(argv[1], O_RDONLY)))
 
   71    if (MAP_FAILED == (map = mmap(0, stat.st_size, PROT_READ, MAP_SHARED, fd, 0)))
 
   80    total_nums = stat.st_size / 
sizeof(int);
 
   82    for(
int i = 0; i < total_nums; i++)
 
   88          int          idx = map[i] >> 5;         
 
   89          unsigned int msk = 1 << (map[i] & 31);  
 
   97    if (munmap(map, stat.st_size))
 
  108    fprintf(stderr, 
"Total numbers read = %d\n", total_nums);
 
  112          for(
int k = 0; k < 31; k++)
 
  113             if (have_num[i] & (1 << k))
 
  114                printf(
"%d\n", (i << 5) + k);
 
#define MAX_NUMS
Maximum number of 32 bit ints we need to store bits. 
 
int main(int argc, char **argv)
Program to read a file with binary positive 32 bit integers, sort the numbers and print them sorted...