int main(int argc, char *argv[])
{

  unsigned int number;
  unsigned int size;
  unsigned int mask;
  unsigned int pos;

  printf ("Enter the number : ");
  scanf ("%x", &number);
  printf ("Enter position (0-31): ");
  scanf ("%d", &pos);
  printf ("Enter mask size (1-%d): ", 32-pos);
  scanf ("%d", &size);
  printf ("Number : ");
  print_bits(number);
  if(size == 32) {
    mask = 0xFFFFFFFF;
  } else {
    mask = (<< (size + 1)) - 1;
  }
  number = (number &  (mask << pos)) >> pos;
  printf ("\nBits : ");
  print_bits(number);
  return 0;
}

Output

Enter the number : 55AA55AA55
Enter position (0-31): 3
Enter mask size (1-29): 10
Number : 10101010010101011010101001010101
Bits   : 00000000000000000000010101001010


Number : 10101010010101011010101001010101
Bits   :                ==>10101001010<==

About our authors: Team EQA

You have viewed 1 page out of 252. Your C learning is 0.00% complete. Login to check your learning progress.

#