zoukankan      html  css  js  c++  java
  • objective-C和C --- 《位运算》的使用(一)

    int a= 1 << 0     // 向右偏移2的0次方,返回01
    int b= 1 << 1    // 向右偏移2的1次方,返回10
    int c= 1 << 2    // 向右偏移2的2次方,返回100
    int d= 1 << 3   // 向右偏移2的3次方,返回1000
    
    int value = a|b ; //表明value中包含a或者b
    //&表示包含
    printf(@"%d%d%d%d",value&a,value&b,value&c,value&d)
    
    //打印结果:1 2 0 0,如果返回原来的数值则表示包含,返回0表示不包含,因为value为1111(a+b),0011 与 01 ->(0001,注:1与1才为1,否则都为0),0011 与 10  ->(0010,注:1与1才为1,否则都为0),上面两个都是返回自己本身,所以表示包含,再看看下面两个,0011与0100 ,返回  0000,0011与1000,返回
    0000,所以下面两个都返回0,不包含
    

     下面参与与运算

        // value  0011     value  0011
        // a      0001       b    0010
        //结果     0001      结果   0010
        
        // value  0011     value  0011
        // c      0100       d    1000
        //结果     0000      结果   0000
    

     测试代码如下

    int a= 1 << 0;     // 向右偏移2的0次方,返回01
    int b= 1 << 1;    // 向右偏移2的1次方,返回10
    int c= 1 << 2;    // 向右偏移2的2次方,返回100
    int d= 1 << 3;   // 向右偏移2的3次方,返回1000
    void test(int value);
    void main(){
     int value = a|b ; //表明value中包含a或者b
         test(value);
    }
    void test(int value){
        if(value & a) printf("value包含了a
    ");
        if(value & b) printf("value包含了b
    ");
        if(value & c) printf("value包含了c
    ");
        if(value & d) printf("value包含了d
    ");
    }
    
    得出结论,之后如果使用枚举时,如果返回多个值可以用位运算来实现,否则只能返回一个数值
    
    将来的自己,会感谢现在不放弃的自己!
  • 相关阅读:
    JVM(二)-运行时数据区
    JVM(一)-JVM入门
    java设计模式之观察者模式
    开散列表
    闭散列表
    VTWORAY 常用配置
    kubernetes 提示1 node(s) had taints that the pod didn't tolerate
    SOCKS5转PPTP VTWORAY配置文件与IPTables配置文件
    【Docker】多阶段构建
    【Docker】容器内存扩容
  • 原文地址:https://www.cnblogs.com/TheYouth/p/6528884.html
Copyright © 2011-2022 走看看