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

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

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
        
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值