二进制存储判断功能

本文探讨了Java中使用位操作实现功能值的组合与解析。通过对特定位进行设置和检查,展示了如何根据不同的功能需求生成对应的整数值,并从中解析出已启用的功能。

package happy;

 

public class ChannelFunctionTest {
public static void main(String[] args) {
System.out.println(0|(1<<1));
System.out.println("+++++++++++++++++++");
System.out.println((0|(1<<1))&(1<<1));
System.out.println((0|(1<<1))&(1<<2));
System.out.println((0|(1<<1))&(1<<3));
System.out.println((0|(1<<1))&(1<<4));
System.out.println((0|(1<<1))&(1<<5));
System.out.println("----------------------------------");
System.out.println((0|(1<<1))|(1<<2));
System.out.println("+++++++++++++++++++");
System.out.println(((0|(1<<1))|(1<<2))&(1<<1));
System.out.println(((0|(1<<1))|(1<<2))&(1<<2));
System.out.println(((0|(1<<1))|(1<<2))&(1<<3));
System.out.println(((0|(1<<1))|(1<<2))&(1<<4));
System.out.println(((0|(1<<1))|(1<<2))&(1<<5));
System.out.println("----------------------------------");
System.out.println(((0|(1<<1))|(1<<2))|(1<<3));
System.out.println("+++++++++++++++++++");
System.out.println((((0|(1<<1))|(1<<2))|(1<<3))&(1<<1));
System.out.println((((0|(1<<1))|(1<<2))|(1<<3))&(1<<2));
System.out.println((((0|(1<<1))|(1<<2))|(1<<3))&(1<<3));
System.out.println((((0|(1<<1))|(1<<2))|(1<<3))&(1<<4));
System.out.println((((0|(1<<1))|(1<<2))|(1<<3))&(1<<5));
System.out.println("----------------------------------");
System.out.println(((0|(1<<1))|(1<<2))|(1<<3)|(1<<4)|(1<<5));
System.out.println("+++++++++++++++++++");
System.out.println((((0|(1<<1))|(1<<2))|(1<<3)|(1<<4))&(1<<1));
System.out.println((((0|(1<<1))|(1<<2))|(1<<3)|(1<<4))&(1<<2));
System.out.println((((0|(1<<1))|(1<<2))|(1<<3)|(1<<4))&(1<<3));
System.out.println((((0|(1<<1))|(1<<2))|(1<<3)|(1<<4))&(1<<4));
System.out.println((((0|(1<<1))|(1<<2))|(1<<3)|(1<<4))&(1<<5));
System.out.println("----------------------------------");
System.out.println(((0|(1<<1))|(1<<2))|(1<<3)|(1<<4)|(1<<5));
System.out.println("+++++++++++++++++++");
System.out.println((((0|(1<<1))|(1<<2))|(1<<3)|(1<<4)|(1<<5))&(1<<1));
System.out.println((((0|(1<<1))|(1<<2))|(1<<3)|(1<<4)|(1<<5))&(1<<2));
System.out.println((((0|(1<<1))|(1<<2))|(1<<3)|(1<<4)|(1<<5))&(1<<3));
System.out.println((((0|(1<<1))|(1<<2))|(1<<3)|(1<<4)|(1<<5))&(1<<4));
System.out.println((((0|(1<<1))|(1<<2))|(1<<3)|(1<<4)|(1<<5))&(1<<5));
}
}

 

 

 

package com.cainiao.aeye.hsf.util;

import java.util.ArrayList;
import java.util.List;

/**
* @author wb-fem407232
* @date 2018/08/02
*/
public class SundaryUtil {

/**
* 通过传入功能枚举bitPos
* 得到functionValue(即数据库存储的value)
* @param bitPosList
* @return
*/
public static Integer getFunctionValue(List<Integer> bitPosList){
if(bitPosList==null || bitPosList.size()>0){
return null;
}
Integer functionValue=0;
for (Integer bitPos: bitPosList) {
functionValue=functionValue|(1<<bitPos);
}
return functionValue;
}

/**
* 通过传入功能枚举bitPos
* 得到拥有的功能bitPos
* @param bitPosList
* @return
*/
public static List<Integer> getHasFunctions(Integer functionValue,List<Integer> bitPosList){
if(functionValue==null ||bitPosList==null ||bitPosList.isEmpty()){
return null;
}
List<Integer> hasFunctionBitPos = new ArrayList<>();
for (Integer bitPos:bitPosList) {
if((functionValue&(1<<bitPos))!=0){
hasFunctionBitPos.add(bitPos);
}
}
return hasFunctionBitPos;
}
}

转载于:https://www.cnblogs.com/fuerming/p/9407905.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值