В большинстве языков есть функции или библиотеки, которые делают это, обычно называемые библиотекой Bignum (GMP - хороший вариант).
Если вы хотите сделать это сами, я бы сделал это так же, как люди делают длинное умножение на бумаге. Для этого вы можете либо работать со строками, содержащими число, либо делать это в двоичном формате, используя побитовые операции.
Пример:
45
x67
---
315
+270
----
585
Или в двоичном формате:
101
x101
----
101
000
+101
------
11001
Изменить: сделав это в двоичном формате, я понял, что было бы намного проще (и, конечно, быстрее) кодировать, используя побитовые операции вместо строк, содержащих числа с основанием 10. Я отредактировал свой пример двоичного умножения, чтобы показать шаблон: для каждого 1-битного нижнего числа добавьте верхнее число, сдвинутое влево позицию 1-битного раза к переменной . В конце эта переменная будет содержать продукт.
Чтобы сохранить продукт, вам нужно иметь два 64-битных числа и представить, что одно из них является первыми 64 битами, а другое - вторыми 64 битами продукта. Вам нужно будет написать код, который переносит добавление от бита 63 второго числа к биту 0 первого числа.
person
Paige Ruten
schedule
11.10.2008