Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将两个BigInteger变量作为无符号变量进行比较?_Java_Biginteger - Fatal编程技术网

Java 如何将两个BigInteger变量作为无符号变量进行比较?

Java 如何将两个BigInteger变量作为无符号变量进行比较?,java,biginteger,Java,Biginteger,我有两个BigInteger变量,其值是从8字节数组初始化的: maxOne: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff midOne: 8000:8000:8000:8000:8000:8000:8000:8000 我想使用一个BigInteger比较方法,它将返回maxOne大于midOne 然而,我一直得到相反的结果。i、 e.midOne大于maxOne 在内部,我可以看到它们存储为: maxOne: mag[0]: 1 signum: -1 弥

我有两个BigInteger变量,其值是从8字节数组初始化的:

maxOne: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
midOne: 8000:8000:8000:8000:8000:8000:8000:8000
我想使用一个BigInteger比较方法,它将返回maxOne大于midOne

然而,我一直得到相反的结果。i、 e.midOne大于maxOne

在内部,我可以看到它们存储为:

maxOne:

mag[0]: 1
signum: -1
弥敦

mag[0]: 7FFF7FFF
mag[1]: 7FFF7FFF
mag[2]: 7FFF7FFF
mag[3]: 7FFF8000
signum: -1
我认为当两者的signum=-1时,“较大的绝对”值小于“较小的绝对”值(例如,-3小于-1)

但出于某种原因,
maxOne.compareTo(midOne)
返回-1

当检查它们的
biginger.doubleValue()
时,我发现

maxOne = -1.0
midOne = -1.7013858727242528 E38
即使compareTo()使用doubleValue()进行比较,maxOne>midOne

那么,为什么比较结果正好相反呢


无论哪种方式,我都有兴趣将它们作为两个无符号整数进行比较。有没有办法做到这一点?

我建议在最重要的位置放一个零字节。这样在创建BigInteger时就不会有符号位出现。

@OHGODSPIDERS
abs()
只会对
signum
求反,所以compareTo()会不断返回midOne大于maxOne。这是个好主意。工作起来很有魅力。