我想找到BigInteger的n位最高位并将其作为字节类型返回。 这是我的家庭作业,我知道很少有人想到它。 请帮我解决。对我来说非常必要。 这是必须实施的方法:
/**
* *
* Gets N numbers of bits from the MOST SIGNIFICANT BIT (inclusive).
*
* @param value Source from bits will be extracted
* @param n The number of bits taken
* @return The n most significant bits from value
*/
private byte msb(BigInteger value, int n) {
return 0x000;
}
答案 0 :(得分:2)
BigInteger有一个bitCount()方法,因此可以告诉你最左边的位置。它还有一个shiftRight()方法。如果你需要5个第一位并且它是47位长,则向右移动42。
答案 1 :(得分:1)
您可以在bitLength()
中尝试java.math.BigInteger
,它会返回该数字中的位数。您可以使用此方法将n
最高有效位检索为:
int n = 3;
BigInteger r = BigInteger.valueOf(23);
BigInteger f = r.shiftRight(r.bitLength() - n);
Byte result = Byte.valueOf(f.toString());
System.out.println(result);
按预期打印5
。