zoukankan      html  css  js  c++  java
  • Java: |(或运算) 与 多选判断

    今天需要在程序中做一个多选判断,突然想起以前经常遇到的 x |= y | z; 这样的,我也明白这个是多选的用意,但为什么能达到我们希望的多选操作,我还真的没去研究过。

    今天早上,百度了一下,搜索到了两篇文章:

    1) 这个是用C写的,道理都一样。摘自:http://blog.csdn.net/arduousbonze/article/details/1619096

    三者的性质
    异或运算:相同为0,不同为1
    与运算:两者为1时为1,有0为0
    或运算:有1为1

    定义如下宏:(观察其特点)

    #define FLAG_DUPLICATE   0x01   //展开二进制00000001 
    #define FLAG_VISIBLE     0x02   //展开二进制00000010 
    #define FLAG_CANSELECT   0x04   //展开二进制00000100 
    #define FLAG_LABELED     0x08   //展开二进制00001000 
    #define FLAG_BACKGROUND  0x10   //展开二进制00100000  
    #define FLAG_SHOWOUTLINE 0x20   //展开二进制01000000 
    #define FLAG_SHOWATEAGLE 0x40   //展开二进制10000000 

    (注:在C/C++中八进制以0开头,如0123(区别十进制的123);十六进制以0x开头,如0x40)
    这样设置宏目的是为了能够应用位运算的性质来判断复选框的状态

    假设用 int nStatus;来存储复选框的结果,可以这样做:

    1.若某一个复选框选中则:nStatus=nStatus|FLAG_DUPLICATE;(其他类似)

    2.那么如果取消了一个复选框呢?应该这样做:
      int mask=0xffffffff^FLAG_DUPLICATE;//(把FLAG_DUPLICATE中为"1"的那一位置为0,其它位都为1)
      nStatus=nStatus&mask;(其他类似)

    3.如何判断某一复选框是否被选中呢?这样做:
      if(nStatus&FLAG_DUPLICATE==FLAG_DUPLICATE)
          cout<<"选中"<<endl;
      else
          cout<<"未选中"<<endl;

    例子:

    //取消复选框 
    void __fastcall LayerInfo::SetVisible(bool bVisible)
    {
        if(bVisible)
            m_nStatus=m_nStatus|FLAG_VISIBLE;
        else
    {
            int mask = 0xffffffff^FLAG_VISIBLE;
            m_nStatus=m_nStatus&mask;
        }
        layer->Visible= bVisible;
    }

    //判断某一复选框是否被选中
    if(m_nStatus&FLAG_SHOWOUTLINE==FLAG_SHOWOUTLINE)
        layer->Symbol->Outline=true;
    else
        layer->Symbol->Outline=false; 还有一篇: http://blog.csdn.net/battlehawk/article/details/5271327 另外我写了一个简单的测试|(或运算)的例子,根据输出的结果,看出规律来了吧:

    System.out.println(-1 | -1);   //输出 -1
    System.out.println(-1 | 0);   //输出 -1
    System.out.println(-1 | 1);   //输出 -1

    System.out.println(0 | 0);   //输出 0
    System.out.println(0 | 1);   //输出 1
    System.out.println(0 | 2);   //输出 2

    2011-12-31

  • 相关阅读:
    Xcode6中如何添加pch文件
    iOS 在UILabel显示不同的字体和颜色
    IOS 获取手机ip地址
    获取设备基本信息
    [__NSCFConstantString size]: unrecognized selector sent to instance 错误
    控制器之间的跳转,多层的跳转
    Multiple build commands for output file
    Can't find keyplane that supports type 4 for keyboard iPhone-Portrait-NumberPad; using 3876877096_Portrait_iPhone-Simple-Pad_Default
    Activity的生命之路
    Spring自定义标签
  • 原文地址:https://www.cnblogs.com/personnel/p/4583148.html
Copyright © 2011-2022 走看看