#include <iostream>
using namespace std;
struct Inst
{
int num1;
int num2;
int num3;
};
int bitCpy(int &field, int b, int c, int d)
{
int range = d - c;
b <<= (32 - d);
b >>= (32 - range);
field = b; // a.num1, a.num2, a.num3 ... etc
return b;
}
int main()
{
Inst i = {};
bitCpy(i.num1, 12345, 0, 31);
bitCpy(i.num2, 67890, 0, 31);
cout << i.num1 << endl;
cout << i.num2 << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEluc3QKewoJaW50IG51bTE7CglpbnQgbnVtMjsKCWludCBudW0zOwp9OwoKaW50IGJpdENweShpbnQgJmZpZWxkLCBpbnQgYiwgaW50IGMsIGludCBkKQp7CiAgICBpbnQgcmFuZ2UgPSBkIC0gYzsKICAgIGIgPDw9ICgzMiAtIGQpOwogICAgYiA+Pj0gKDMyIC0gcmFuZ2UpOwogICAgZmllbGQgPSBiOyAvLyBhLm51bTEsIGEubnVtMiwgYS5udW0zIC4uLiBldGMKICAgIHJldHVybiBiOwp9CgppbnQgbWFpbigpCnsKCUluc3QgaSA9IHt9OwoJYml0Q3B5KGkubnVtMSwgMTIzNDUsIDAsIDMxKTsKCWJpdENweShpLm51bTIsIDY3ODkwLCAwLCAzMSk7Cgljb3V0IDw8IGkubnVtMSA8PCBlbmRsOwoJY291dCA8PCBpLm51bTIgPDwgZW5kbDsKCXJldHVybiAwOwp9