找到BigInteger(msb)的最高有效位的N位

时间:2015-09-23 04:12:26

标签: java math biginteger

我想找到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;
    }

2 个答案:

答案 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