Я использую простую функцию для умножения больших целых чисел. Иногда к выводу добавляется еще один старший нулевой байт. Почему это случилось и как я могу это предотвратить?Ведущий ноль в умножении BigInteger
PS: а и б уже меньше, чем мод
private byte[] multiply(final byte[] a, final byte[] b, final BigInteger mod) {
BigInteger M1 = new BigInteger(1, a);
BigInteger M2 = new BigInteger(1, b);
BigInteger out = M1.multiply(M2).mod(mod);
res = out.toByteArray();
}
вы можете дать примеры ваших входов и то, что вы видите в качестве вывода? или рабочий пример на ideone.com? – Tschallacka
Да, конечно. Я подготовил код, и вы можете посмотреть здесь [link] (http://ideone.com/xKgCH6) m1 * m2 вернуть неверный результат, m3 * m4 произвести правильный вывод. @Tschallacka – Bob
@Bob вам нужно включить свой код в свой вопрос (используя кнопку редактирования). –