解析:
代码:
#include<iostream>
using namespace std;
int main()
{
int r,x,y;
while(~scanf("%x,%d,%d",&r,&x,&y))
{
//先左移x位,除了第x位为1其他位都是0:1<<x
//再取反,除了第x位为0其余为0,
//所以最后(r)bin的第x为一定为0.
// r&=(~(1<<x)) 实现:将(r)bin的第x位(x=0,1,2...)设置为0.
//In binary,0或1(凡数)与1做&运算,皆不变。:0&1=0,1&1=1.
//In bin,凡数与0做异或^ OR 或| 运算,皆不变。:0^0=0,1^0=1. 0|0=0,0|1=1.
r=r&(~(1<<x));
//r|=(1<<x)-->将(r)bin的第x位设置为1,余者不变。
r=r|(1<<(y-1))|(1<<y);
r=r&(~(1<<(y-2)));//将(r)bin的第(y-2)位设置为0.
printf("%x\n",r);//16进制输出
}
return 0;
}