如int flag = 0;有三个标志:
int flag1 = 0X00000100;
int flag2 = 0X00000200;
int flag3 = 0X00000400;我可以随便设置哪个标志到flag中,如flag |= flag1;
flag |= flag3;这样就设置了flag1, flag3两个标志。但现在我要判断flag中有没有设置flag1应该怎么判断呢,按道理应该是可以用&来判断某个位的,但java中不知道怎么用。谢谢指教。不希望是笨方法,希望是直接的移位和位操作等。不希望是转成byte[]来判断某个字节的值。
int flag1 = 0X00000100;
int flag2 = 0X00000200;
int flag3 = 0X00000400;我可以随便设置哪个标志到flag中,如flag |= flag1;
flag |= flag3;这样就设置了flag1, flag3两个标志。但现在我要判断flag中有没有设置flag1应该怎么判断呢,按道理应该是可以用&来判断某个位的,但java中不知道怎么用。谢谢指教。不希望是笨方法,希望是直接的移位和位操作等。不希望是转成byte[]来判断某个字节的值。
if ((flag & flag1) != 0){
...
}
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);
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");
}
}
}
因为flag1中只有一位是1,而这一位上flag不是1的话,falg & flag1后自然得到0