问题来源:下位机数据对接
数据库的数据类型为bigint和无符号bigInt分别对应java的Long类型和BigInteger
BigInteger是无法直接进行位运算操作的,但是BigInteger的方法可以实现&的位运算操作,代码贴上
public static void main(String[] args){
// 2^63-1= 9223372036854775807;
BigInteger tempVal = new BigInteger("2049");
BigInteger divide = new BigInteger("2");
BigInteger compareNum=new BigInteger("1");
ArrayList<Byte> ResultArray = new ArrayList<Byte>();
//位遍历 算出第几位不为1的编码
for(Byte i = 0;; i++){
//判断是否除尽
//BigInteger的equals方法参数类型为Object,
//但是这个类型必须是BigInteger类型才可以比较
if(!tempVal.equals(compareNum)){
//取整数和余数
BigInteger[] bigIntegers = tempVal.divideAndRemainder(divide);
if(bigIntegers[1].equals(compareNum)){
ResultArray.add(i);
}
tempVal=bigIntegers[0];
}else{
ResultArray.add(i);
break;
}
}
System.out.println(ArrayUtils.toString(ResultArray));
}
网友评论