BigInteger实现&的位运算操作

问题来源:下位机数据对接

数据库的数据类型为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));
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。