使用二进制设置状态看的是数字的二进制内容,并不是看的十进制内容(除非你已经到看见数字立马能翻译成相应的二进制)
用JAVA
代码实现的.其他语言同理
// 真实环境请勿使用这个命名方式
private static int 状态1 = 1;
private static int 状态2 = 1 << 1;
private static int 状态3 = 1 << 2;
private static int 状态4 = 1 << 3;
private static int 状态5 = 状态1 | 状态2;
private static int 状态6 = 状态1 | 状态3;
public static void main(String[] args) {
System.out.println("状态1 二进制: "+ Integer.toBinaryString(状态1)+ " 十进制: "+状态1); // 状态1 二进制: 1 十进制: 1
System.out.println("状态2 二进制: "+ Integer.toBinaryString(状态2)+ " 十进制: "+状态2); // 状态2 二进制: 10 十进制: 2
System.out.println("状态3 二进制: "+ Integer.toBinaryString(状态3)+ " 十进制: "+状态3); // 状态3 二进制: 100 十进制: 4
System.out.println("状态4 二进制: "+ Integer.toBinaryString(状态4)+ " 十进制: "+状态4); // 状态4 二进制: 1000 十进制: 8
// 加状态 `|`
System.out.println("状态1+状态2=状态5 二进制: "+ Integer.toBinaryString(状态5)+ " 十进制: "+状态5); // 状态1+状态2=状态5 二进制: 11 十进制: 3
System.out.println("状态1+状态3=状态6 二进制: "+ Integer.toBinaryString(状态6)+ " 十进制: "+状态6); // 状态1+状态3=状态6 二进制: 101 十进制: 5
System.out.println("状态6+状态1=状态6 二进制: "+ Integer.toBinaryString(状态6|状态1)+ " 十进制: "+(状态6|状态1)); // 状态6+状态1=状态6 二进制: 101 十进制: 5 `注意状态6已经包含状态1`
// 减状态 `&~`
System.out.println("状态5-状态2=状态1 二进制: "+ Integer.toBinaryString(状态5&~状态2)+ " 十进制: "+(状态5&~状态2)); // 状态5-状态2=状态1 二进制: 1 十进制: 1
System.out.println("状态6-状态3=状态1 二进制: "+ Integer.toBinaryString(状态6&~状态3)+ " 十进制: "+(状态6&~状态3)); // 状态6-状态3=状态1 二进制: 1 十进制: 1
System.out.println("状态6-状态4=状态6 二进制: "+ Integer.toBinaryString(状态6&~状态4)+ " 十进制: "+(状态6&~状态4)); // 状态6-状态4=状态6 二进制: 101 十进制: 5 `注意状态6不包含状态4`
System.out.println("状态5是否包含状态1 二进制: "+ Integer.toBinaryString(状态5&状态1)+ " 十进制: "+(状态5&状态1)); // 状态5是否包含状态1 二进制: 1 十进制: 1
System.out.println("状态5是否包含状态2 二进制: "+ Integer.toBinaryString(状态5&状态2)+ " 十进制: "+(状态5&状态2)); // 状态5是否包含状态2 二进制: 10 十进制: 2
System.out.println("状态5是否包含状态3 二进制: "+ Integer.toBinaryString(状态5&状态3)+ " 十进制: "+(状态5&状态3)); // 状态5是否包含状态3 二进制: 0 十进制: 0
System.out.println("状态5是否包含状态4 二进制: "+ Integer.toBinaryString(状态5&状态4)+ " 十进制: "+(状态5&状态4)); // 状态5是否包含状态4 二进制: 0 十进制: 0
}