如int flag = 0;有三个标志:
int flag1 = 0X00000100;
int flag2 = 0X00000200;
int flag3 = 0X00000400;我可以随便设置哪个标志到flag中,如flag |= flag1;
flag |= flag3;这样就设置了flag1, flag3两个标志。但现在我要判断flag中有没有设置flag1应该怎么判断呢,按道理应该是可以用&来判断某个位的,但java中不知道怎么用。谢谢指教。不希望是笨方法,希望是直接的移位和位操作等。不希望是转成byte[]来判断某个字节的值。

解决方案 »

  1.   

    和C里面一样的:
    if ((flag & flag1) != 0){
        ...
    }
      

  2.   

    位移的話,像這樣。int a = 1;
    int b = 1<<1;
    int c = 1<<2;
    int d = a|b|c;
    System.out.println(d);
    System.out.println(d%2);
    System.out.println((d>>1)%2);
    System.out.println((d>>2)%2);
    System.out.println((d>>3)%2);
      

  3.   

    flag |= flag1;
    flag |= flag3;
    java中没有这种语法吧。我想你只是想标志一个flag然后确定是不标志了所给的数值吧。
    flag = flag1^12345;
    判断两个是同一个是
    public class Test {
    public static void main(String[] args) {
    int flag1 = 123;
    int flag = flag1 ^ 12345;
    if((flag ^ 12345) == 123) {
    System.out.println("true");
    }
    }
    }
      

  4.   

    1楼的对的。
    因为flag1中只有一位是1,而这一位上flag不是1的话,falg & flag1后自然得到0