import sys
# 预计算12位掩码(0xFFF = 4095)
mask_12bit = 0xFFF
data = list(sys.stdin.read().splitlines())
n = int(data[0])
for i in range(1,n+1):
op,x,p=map(int,data[i].split())
if op==1:
x=x<<p
#保留12位,就对x取余2*12次方即可
x=x%2**12
#或者x&mask_12bit
elif op==2:
x=x>>p
#掩码移动左移12-p位(保留12位)再与x相加即可
x=x+(mask_12bit<<(12-p)&mask_12bit)
elif op==3:
#将第p位掩码设为0再&x
x=x&(mask_12bit-2**p)
else:
#1左移p位 | x
x=x|(1<<p)
print(x)

京公网安备 11010502036488号