title: How to extract specific bits from a number in C?
body: <p>I need to extract specific part (no of bits) of a <code>short</code> data type in C. </p>
  
  <p>For Example I have a binary of 52504 as 11001101000 11000 and I want First 6 ( FROM LSB --> MSB i.e 011000 decimal 24) bits and rest of 10 bits ( 11001101000 decimal 820).</p>
  
  <p>Similarly I want this function to be too generalized to extract specific no of bits given "start" and "end" (i.e chunks of bits equivalent with some decimal value).</p>
  
  <p>I checked other posts, but those were not helpful, as given functions are not too much generalized.</p>
  
  <p>I need something that can work for <code>short</code> data type of C.</p>
  
  <h2>Edit</h2>
  
  <p>I am having the short array of size 2048 bytes. Where each Pixel is of 10 bits. So my 16 bit consisting each byte occupying some time 2 pixels data, sometimes 3 pixels data.</p>
  
  <p>Like </p>
  
  <p>( PIXEL : 0,1 )
   10 BITS + 6 BITS</p>
  
  <p>then ( PIXEL : 1,2,3 )
   4 BITS ( 1st pixels remaining bits ) +  10 BITS + 2 BITS.</p>
  
  <p>and so on ..this pattern continues ...
  So, all I want to extract each pixel and make an entire array of having each pixels to be  occupied wholy in on WHOLE BYTE ( of 16 bits ) like..
  1 byte should contain 1 DATA PIXEL, the other BYTE should contain other PIXEL value in whole 16 bits and so on so forth.</p>