解析:
代码:
#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 ",r);//16进制输出 } return 0; }