При умножении числа до переполнения, требуется вывести число до и после переполнения. Не получается с отрицательным числом. С положительным все хорошо

Например первое число - 1. Его умножать до переполнения. На положительное число алгоритм понятен, не понятно для отрицательного значения. Например число - 1 умножать на (- 2) до переполнения

public class Loop5 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Введите число");
        long l = Long.parseLong(scan.next());
        Loop5 l5 = new Loop5();
        l5.longMinusValue(l);

    }

    public void longMinusValue(long l) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Введите число на которое умножать");
        long l1 = Long.parseLong(scan.next());
        while (Long.MAX_VALUE > l) {
            l *= l1;
            System.out.println(l);
        }

    }
}

Ответы (1 шт):

Автор решения: MBo

Для случая тихого переполнения:

 while (true) {
    long res = l * l1;
    if (res/l==l1) {
       l = res;
       System.out.println(l);
       }
    else{
      System.out.println("Overflow");
      System.out.println(res);
      break;
   }
}

Пример для 100,-200:

-20000
4000000
-800000000
160000000000
-32000000000000
6400000000000000
-1280000000000000000
Overflow
-2254417031933722624
→ Ссылка