#include <stdio.h>

unsigned int invert( unsigned int x, int p, int n)
{
  unsigned int t =  ((1u<<n)-1u)<<p;
  printf( "x = %x, n = %d, p = %d\n", x, n, p);
  printf( "(1u<<n) = %x\n", (1u<<n));
  printf( "((1u<<n)-1u) = %x\n", ((1u<<n)-1u));
  printf( "((1u<<n)-1u)<<p = %x\n", ((1u<<n)-1u)<<p);
  return x ^ t;
}

int main( void )
{
  unsigned int x = 0xffffffffu;
  printf( "x = %x\n", invert( x, 0, 32));
  return 0;
}
