• poj 3748 位操作


    位操作
    Time Limit: 1000MS   Memory Limit: 65536K
    Total Submissions: 8856   Accepted: 3535

    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

    Source

     

    做法一:

    C++标准库:bitset 用法整理  :

    http://happyboy200032.blog.163.com/blog/static/46903113201291252033712/

     1 #include<cstdio>
     2 #include<cmath>
     3 #include<cstring>
     4 #include<iostream>
     5 #include<bitset>//二进制类,bit位,初始为0
     6 using namespace std;
     7 int main(){
     8     int r,x,y;
     9     while(scanf("%x,%d,%d",&r,&x,&y)==3){//输入16进制数
    10         bitset<32> b(r);
    11         b.reset(x);
    12         b.set(y);
    13         b.set(y-1);
    14         b.reset(y-2);
    15         printf("%x
    ",b.to_ulong());//将二进制转换为unsign  long数值
    16     }
    17     return 0;
    18 }

     

     

    做法二:

     模拟

     1 #include<cstdio>
     2 #include<cmath>
     3 #include<cstring>
     4 #include<iostream>
     5 #include<bitset>
     6 using namespace std;
     7 int bit[32];
     8 int main(){
     9     int r,x,y;
    10     while(scanf("%x,%d,%d",&r,&x,&y)==3){
    11         memset(bit,false,sizeof(bit));
    12         int i=0;
    13         for(;i<32;i++){
    14             bit[i]=r&1;
    15             r=r>>1;            
    16         }
    17         bit[x]=0;
    18         bit[y]=1;
    19         bit[y-1]=1;
    20         bit[y-2]=0;
    21         for(i=31;i>=0;i--){
    22             r=r<<1;
    23             r=r|bit[i];
    24         }
    25         printf("%x
    ",r);
    26     }
    27     return 0;
    28 }
  • 相关阅读:
    mysql5.7慢查询开启配置
    easyui的datagrid删除一条记录后更新出问题
    easyui跨iframe属性datagrid
    struts2笔记12-声明式异常
    struts2笔记11-OGNL
    struts2笔记10-值栈
    linux命令学习03-grep
    struts2笔记09-动态方法调用
    1、GIT简介
    玩转Python语言之4:奇技淫巧
  • 原文地址:https://www.cnblogs.com/Deribs4/p/4299132.html
Copyright © 2020-2023  润新知