每个测试文件均包含多组测试数据。第一行输入一个整数
代表数据组数,每组测试数据描述如下:
在一行上输入三个整数
,表示操作类型、初始整数、操作参数。操作类型对应上述四种操作。
对于每组测试数据,新起一行输出一个整数,表示操作后的结果。
4 1 1023 3 2 910 5 3 256 8 4 3 8
4088 3996 0 259
对于第一组测试数据,
的二进制表示为
,整体左移
位后得到
。
对于第二组测试数据,
的二进制表示为
,整体右移
位后得到
。
对于第三组测试数据,
的二进制表示为
,将第
位赋值为
后得到
。
对于第四组测试数据,
的二进制表示为
,将第
位赋值为
后得到
。
int main() {
int t;
cin >> t;
while(t --) {
int o, x, p;
cin >> o >> x >> p;
switch (o) {
case 1:
x = (x << p) & 0xFFF;
break;
case 2:
x = (x >> p) | (0xFFF - (0xFFF >> p));
break;
case 3:
x &= ~(1 << p);
break;
case 4:
x |= (1 << p);
break;
}
cout << x << endl;
}
}