poj 3748 水题位操作

来源:互联网 发布:淘宝代写软文怎么发布 编辑:程序博客网 时间:2024/05/29 14:44
Description

假设你工作在一个32位的机器上,你需要将某一个外设寄存器的第X位设置成0(最低位为第0位,最高位为第31位),将第Y位开始的连续三位设置成110(从高位到低位的顺序),而其他位保持不变。对给定的寄存器值R,及X,Y,编程计算更改后的寄存器值R。
Input

仅一行,包括R,X,Y,以逗号","分隔,R为16进制表示的32位整数,X,Y在0-31之间且Y>=3,(Y-X)的绝对值>=3,保证两次置位不会重合
Output

更改后的寄存器值R(16进制输出)
Sample Input

12345678,0,3
Sample Output

1234567c


#include <cstdio>#include <queue>#include <algorithm>#include <cstring>using namespace std;#define INF 0x3fffffff#define clr(s,t) memset(s,t,sizeof(s));#define N 1000#define D 30unsigned int n;int main(){    int i,j,a,b;    scanf("%x,%d,%d",&n,&a,&b);    j = 1<<a;    j = ~j;    n &= j;    j = 1<<b;    j |= (1<<(b-1));    n |= j;    j = 1<<(b-2);    j = ~j;    n &= j;    printf("%x\n",n);}


0 0
原创粉丝点击