gpt4 book ai didi

Java BigInteger testBit 64 位长

转载 作者:行者123 更新时间:2023-11-29 05:12:03 26 4
gpt4 key购买 nike

这可能是个愚蠢的问题,但我似乎找不到简单的答案。

我正在读取一个 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 位没有设置。由于它的存储时间很长,我认为我不必填充该值,还是我完全做错了什么?

如有任何意见或建议,我们将不胜感激。

谢谢。

最佳答案

你数错了:

public void test() {
// Binary - 100000000000000100001100011
// ^ This is bit 26
long value = 0x4000863;
// Binary - ‭1000000000000000000000000000000000000000000000000000000000000000‬
// ^ THIS is bit 63
long bigger = 0x8000000000000000L;
BigInteger test = new BigInteger(Long.toString(value));
System.out.println("L:" + Long.toBinaryString(value) + "\r\nB:" + test.toString(2) + "\r\nB63:" + test.testBit(63));
test = new BigInteger(Long.toString(bigger));
System.out.println("L:" + Long.toBinaryString(bigger) + "\r\nB:" + test.toString(2) + "\r\nB63:" + test.testBit(63));
}

关于Java BigInteger testBit 64 位长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28085233/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com