Использование списка для добавления BigInteger

Я реализую свой собственный класс BigInteger с использованием ArrayList и не уверен, как написать свой метод сложения.

public BigInt plus(BigInt operand){
    //deep copy?
    ArrayList<Byte> a = this.digit;
    ArrayList<Byte> b = operand.digit;
    ArrayList<Byte> sum = new ArrayList<>();

    //code  

    return new BigInt();
}

Цель состоит в том, чтобы передать еще один BigInt, взять его Arraylist байтов и добавить его в Arraylist байтов текущего BigInt, но при этом, если значение сложения 2 байтов вместе, вы бы взяли '1' и добавили его к следующему байту в списке.

IE:

BigInt1 = "3,2,1,7"

BigInt2 = "1,4,3,5"

Добавление 7 и 5 создаст 12, поэтому 1 будет переноситься, а 2 будет в этом индексе для возвращенного BigInt.

Финальный BigInt должен быть

BigIntSum = "4,6,5,2"

У меня вопрос, как я могу перебрать эти списки, добавить байты и перенести число, если необходимо, и добавить это? Любая помощь с благодарностью. BigInt имеет конструктор, который может принимать строку, которая превращается в свой собственный ArrayList

1 ответ

Что -то вроде этого...

carry = 0
for i = bigInt1.Length - 1 to zero
 sum = bigInt1[i] + bigInt2[i] + carry
 if (sum > 10) {
    sum = sum mod 10
    carry = 1
 else
    carry = 0
 endif
 bigIntResult = sum
loop i
// after the loop, if carry == 1, then you have overflow and you need to lengthen bigIntResult
Другие вопросы по тегам