zoukankan      html  css  js  c++  java
  • C语言中的位操作(8)根据指定掩码选择两数之一

    unsigned int a;    // value to merge in non-masked bits
    unsigned int b;    // value to merge in masked bits
    unsigned int mask; //if mask=1,结果数据从b中选择,else 从a中选择
    unsigned int r;     //结果r= (a & ~mask) | (b & mask)
    
    r = a ^ ((a ^ b) & mask); 

    C测试代码:

     1 #include<stdio.h>
     2 #include<string.h>
     3 
     4 int main()
     5 {
     6     unsigned int a;   
     7     unsigned int b;   
     8     unsigned int mask; 
     9     unsigned int r;    
    10     a=2;  b=4;  mask=0;
    11     r = a ^ ((a ^ b) & mask); 
    12     printf("%d\n",r);
    13     getchar();
    14     getchar();
    15     return 0;
    16   }
    17 
    18   /*
    19      a:00000010
    20      b:00000100
    21      ^---------
    22  (a^b):00000110
    23   mask:00000000
    24      &---------
    25        00000000
    26      a:00000010
    27      ^---------
    28        00000010
    29 
    30 ------------------------
    31      a:00000010
    32      b:00000100
    33      ^---------
    34  (a^b):00000110
    35   mask:00000001
    36      &---------
    37        00000000
    38      a:00000010
    39      ^---------
    40        00000010
    41 
    42        */
    作者:xueda120
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    ADO.NET的记忆碎片(四)
    ADO.NET的记忆碎片(八)
    卡特兰数 应用
    hdu 1249 三角形
    hdu 1143
    nyist 93 汉诺塔(三)
    hdu 1123 Train Problem II
    hdu 1133 Buy the Ticket
    hdu 1022 Train Problem I
    nyist 610 定长覆盖
  • 原文地址:https://www.cnblogs.com/xueda120/p/3134304.html
Copyright © 2011-2022 走看看