标签:style blog io color ar os sp 数据 on
假设在一个32位的机器上,需要将某个外设寄存器的第X位(最低位为第0位,最高位为第31位)设置成0,将第Y位开始的连续三位设置成110(从高位到低位的顺序),而其它位保持不变。对给定的寄存器值R,及X,Y,编程计算更改后的寄存器值R。1234567c
/************************************************************************* > File Name: a.c > Author: 傻李 > Mail: hellojukay@gmail.com > Created Time: 2014年11月15日 星期六 18时37分42秒 ************************************************************************/ #include<stdio.h> void print(int); int main() { int R; int x,y; scanf("%x,%d,%d",&R,&x,&y); //第x位置0 print(R); x = x &(~ (1UL << x)); //Y位开始连续3位置110 R = R | (1UL << y); R = R | (1UL << (y-1)); R = R &(~ (1UL << (y-2))); printf("%x\n",R); print(R); return 0; } void print(int c) { if(c>>1) print(c>>1); printf("%d",c&1); }
#include <stdio.h> #define CLR(r, x) r &= ~(1UL << x) //1UL表示32位无符号数,将r的x位清零。 #define SET(r, y) r |= (1UL << y) //表示将r的y位置零 int main() { int r, x, y; scanf("%x,%d,%d", &r,&x, &y); CLR(r,x); //清除x位 SET(r,y); //置位y位 SET(r,y-1); //置位y-1位 CLR(r,y-2); //置位y-2位 printf("%x", r); return 0; }
标签:style blog io color ar os sp 数据 on
原文地址:http://blog.csdn.net/u013163178/article/details/41149077