Advertisement
Guest User

Untitled

a guest
Aug 7th, 2016
369
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. void mem_set_bits(char* base, uint32_t start_bit, uint32_t end_bit)
  2. {
  3.     char s_bit_under = start_bit & 0x7;
  4.     char e_bit_over = (end_bit+1 & 0x7);
  5.    
  6.     char start = (start_bit + 7)>>3;
  7.     char end = (end_bit+1)>>3;
  8.    
  9.     //If bits are not byte aligned for the start
  10.     if((start_bit>>3)==end)
  11.         base[start_bit>>3] |= ((1 << e_bit_over - s_bit_under)-1) << s_bit_under;
  12.     else
  13.     {
  14.         if(s_bit_under)
  15.             base[start_bit>>3] |= ((unsigned char)-1) << s_bit_under;
  16.         if(e_bit_over)
  17.             base[end] |= (1<<e_bit_over)-1;
  18.     }
  19.    
  20.     for(uint32_t c = start; c<end; c++)
  21.         base[c] = (unsigned char)-1;
  22. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement