#include <stdio.h>
int main()
{
int bo_bits = 2;
int tag_bits = 28;
int addr = 1;
unsigned int index = (unsigned int)addr;
index = index << tag_bits;
index = index >> bo_bits;
printf("decimal=%u hex=0x%08x\n", index
, index
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbWFpbigpCnsKICAgIGludCBib19iaXRzID0gMjsKICAgIGludCB0YWdfYml0cyA9IDI4OwogICAgaW50IGFkZHIgPSAxOwoKICAgIHVuc2lnbmVkIGludCBpbmRleCA9ICh1bnNpZ25lZCBpbnQpYWRkcjsKICAgIGluZGV4ID0gaW5kZXggPDwgdGFnX2JpdHM7CiAgICBpbmRleCA9IGluZGV4ID4+IGJvX2JpdHM7CgogICAgcHJpbnRmKCJkZWNpbWFsPSV1IGhleD0weCUwOHhcbiIsIGluZGV4LCBpbmRleCk7CgogICAgcmV0dXJuIDA7Cn0K