二进制Java BigInteger测试位64位长
这可能是一个愚蠢的问题,但我似乎找不到一个简单的答案
我正在读取一个64位(8字节)long
值,然后尝试使用BigInteger.testBit
来查看是否设置了位63,因为它被用作标志
long value = 0x4000863; //This value is actually read from a file
Long.toBinaryString(value) = 100000000000000100001100011
BigInteger test = new BigInteger(Long.toString(value));
if (test.testBit(63)) {
//yay
}
else {
//boo
}
上面的代码是我目前正在尝试的,它说位63没有设置。由于它被存储为长时间,我不认为我必须填充值,或者我只是做了一些完全错误的事情
如有任何意见或建议,将不胜感激
谢谢
# 1 楼答案
你数错了位: