用二进制位运算表示数据的多种状态

使用二进制设置状态看的是数字的二进制内容,并不是看的十进制内容(除非你已经到看见数字立马能翻译成相应的二进制)

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
        
    }

你可能感兴趣的:(java,开发语言)