C语言竞赛题目全--重点--多看看题目类型!!!.docVIP

  • 42
  • 0
  • 约16.63万字
  • 约 128页
  • 2016-10-15 发布于四川
  • 举报

C语言竞赛题目全--重点--多看看题目类型!!!.doc

C语言竞赛题目全--重点--多看看题目类型!!!

C语言竞赛题目大全 POWERED BY SYD168 2010年5月7日 寄存器操作 问题: 假设在一个32位的机器上需要将某个外设寄存器的第X位(最低位为第0位,最高位为第31位)设置成0,将第Y位开始的连续三位设置成110(从高位到低位的顺序),而其位保持不变。对给定的寄存器值R,及X,Y,编程计算更改后的寄存器值R。 仅一行,包括R,X,Y,以逗号,分隔,R为16进制表示的32位整数,X,Y在0-31之间且Y=3,(Y-X)的绝对值=3,保证两次置位不会重合更改后的寄存器值R(16进制输出) Sample Input0,3 输出: 1234567c 解题思路:很简单的位操作,但是需要注意的是Y那里是 110,不能直接或上110,而是先两次SET,在CLR。#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,

文档评论(0)

1亿VIP精品文档

相关文档