Получить максимальное значение для BigInteger с n битами - PullRequest
2 голосов
/ 11 ноября 2011

Я хочу сравнить два метода умножения, реализованные в Java, которые используют операции сдвига больших чисел. Поэтому мне нужны достаточно большие BigIntegers.

Поскольку я хочу сравнивать их побитно, какой будет лучший подход для генерации BigIntegers с n битами, которые полностью используются в операции умножения.

Мой подход пока такой:

byte[] bits = new byte[bitLength];

BigInteger number = new BigInteger(bits).flipBit(bitLength);

1 Ответ

2 голосов
/ 11 ноября 2011

Как насчет этого:

import java.math.BigInteger;

public class Test
{
    public static void main(String[] args)
    {
        int bits = 3;

        BigInteger value = BigInteger.ZERO
                                     .setBit(bits)
                                     .subtract(BigInteger.ONE);
        System.out.println(value);  // Prints 7 == 111 in binary
    }
}

Другими словами, установите бит, который на на один больше, чем вы хотите, затем вычтите один, чтобы получить значение, которое использует все младшие биты..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...