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
    ");
    }
    
    得出结论,之后如果使用枚举时,如果返回多个值可以用位运算来实现,否则只能返回一个数值
    
    将来的自己,会感谢现在不放弃的自己!
  • 相关阅读:
    接口测试用例设计方法
    接口测试的总结文档
    数据库操作语句类型(DQL、DML、DDL、DCL)简介
    MySQL基础学习笔记
    Python2爬取内涵段子
    Python编程笔记
    Python核心编程笔记--动态属性
    Python核心编程笔记--私有化
    Python核心编程笔记--浅拷贝与深拷贝
    python核心编程笔记--模块的导入
  • 原文地址:https://www.cnblogs.com/TheYouth/p/6528884.html
Copyright © 2011-2022 走看看