#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;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp1bnNpZ25lZCBpbnQgaW52ZXJ0KCB1bnNpZ25lZCBpbnQgeCwgaW50IHAsIGludCBuKQp7CiAgdW5zaWduZWQgaW50IHQgPSAgKCgxdTw8biktMXUpPDxwOwogIHByaW50ZiggInggPSAleCwgbiA9ICVkLCBwID0gJWRcbiIsIHgsIG4sIHApOwogIHByaW50ZiggIigxdTw8bikgPSAleFxuIiwgKDF1PDxuKSk7CiAgcHJpbnRmKCAiKCgxdTw8biktMXUpID0gJXhcbiIsICgoMXU8PG4pLTF1KSk7CiAgcHJpbnRmKCAiKCgxdTw8biktMXUpPDxwID0gJXhcbiIsICgoMXU8PG4pLTF1KTw8cCk7CiAgcmV0dXJuIHggXiB0Owp9CgppbnQgbWFpbiggdm9pZCApCnsKICB1bnNpZ25lZCBpbnQgeCA9IDB4ZmZmZmZmZmZ1OwogIHByaW50ZiggInggPSAleFxuIiwgaW52ZXJ0KCB4LCAwLCAzMikpOwogIHJldHVybiAwOwp9Cg==