#include <stdio.h>
#include <stdint.h>
int main(void) {
unsigned int nbBits = 4;
//const uint32_t mask = 0xFFFFFFFF << (32 - nbBits);
const uint32_t mask = ~((uint32_t) 0xFFFFFFFF >> nbBits);
uint32_t t = 0xffffffff;
int32_t u = (int32_t) t;
int32_t a = -2;
printf("a >> 1 = %x\n", a
>> 1); uint32_t b = (uint32_t) (a >> 1);
printf("%x", 0xFFFFFFFF & mask
); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KCmludCBtYWluKHZvaWQpIHsKCXVuc2lnbmVkIGludCBuYkJpdHMgPSA0OwoJLy9jb25zdCB1aW50MzJfdCBtYXNrID0gMHhGRkZGRkZGRiA8PCAoMzIgLSBuYkJpdHMpOwoJY29uc3QgdWludDMyX3QgbWFzayA9IH4oKHVpbnQzMl90KSAweEZGRkZGRkZGID4+IG5iQml0cyk7Cgl1aW50MzJfdCB0ID0gMHhmZmZmZmZmZjsKCWludDMyX3QgdSA9IChpbnQzMl90KSB0OwoJcHJpbnRmKCJ1ID0gJWRcbiIsIHUpOwoJaW50MzJfdCBhID0gLTI7CglwcmludGYoImEgPSAleFxuIiwgYSk7CglwcmludGYoImEgPj4gMSA9ICV4XG4iLCBhID4+IDEpOwoJdWludDMyX3QgYiA9ICh1aW50MzJfdCkgKGEgPj4gMSk7CglwcmludGYoImIgPSAleFxuIiwgYik7CglwcmludGYoIiV4IiwgMHhGRkZGRkZGRiAmIG1hc2spOwoJcmV0dXJuIDA7Cn0=