位运算”在程序开发中的妙用!

位运算:

位运算符包括: 与(&)、非(~)、或(|)、异或(^)

    &:当两边操作数的位同时为1时,结果为1,否则为0。如1100&1010=1000

     | :当两边操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110

     ~:0变1,1变0

     ^:两边的位不同时,结果为1,否则为0.如1100^1010=0110

它适合用在多状态位的地方,且各状态位有交集;如“报告审阅”需要各级领导全部审阅后才能通过:

贴上例子代码,大家细心研读,就能知其奥秘了:

 

public class BitwiseOperatorsDemo {
                                        
    public static final int NONE = 0;
    public static final int TEAM_LEADER = 1;
    public static final int MANAGER = 2;
    public static final int BIG_MANAGER = 4;
    public static final int BOSS = 8;
                                        
    /**
     * @param args
     */
    public static void main(String[] args) {
                                            
        //设置初始状态为空
        int status = NONE;
        //组长阅
        status |= TEAM_LEADER;
        //经理阅
        status |= MANAGER;
        //大经理阅
        status |= BIG_MANAGER;
        //老板阅
        status |= BOSS;
                                            
        if((status & TEAM_LEADER) == TEAM_LEADER) {
            System.out.println("status="+status + "; TeamLeader pass" );
        }
                                            
        if((status & MANAGER) == MANAGER) {
            System.out.println("status="+status + "; Manager pass" );
        }
                                            
        if((status & BIG_MANAGER) == BIG_MANAGER) {
            System.out.println("status="+status + "; BigManager pass" );
        }
                                            
        if((status & BOSS) == BOSS) {
            System.out.println("status="+status + "; Boss pass" );
        }
                                            
        //经理撤销审阅
        status &= ~MANAGER;
        //老板撤销审阅
        status &= ~BOSS;
                                            
        if((status & MANAGER) != MANAGER) {
            System.out.println("status="+status + "; Manager no pass" );
        }
        if((status & BOSS) != BOSS) {
            System.out.println("status="+status + "; Boss no pass" );
        }
                                    
    }
                                    
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值