eegmak
@eegmak

Знаете ли вы алгоритмы длинной арифметики, операции которого не выходят за границы двух байт?

Длинное целое число можно представить в виде массива байт, а дальше реализовать различные операции двух массивов байт (перемножение,деление,остаток от возведения в степень, сложение)..
Знаете ли вы алгоритмы над длинными целыми, в процессе работы которых не происходит переполнения типа равного двум байтам (2 умножить на основание системы счисления) и результатом которых сразу может быть массив байт?
к примеру, вот перемножение двух двубайтных чисел, но результат это не массив байт, а целое число
n1=1023
n2=2047
n1b=n1.to_bytes(2,byteorder="big") #функция переводит число в байт массив из двух элементов, где n1b[0]*256+n1b[1]=n1
n2b=n2.to_bytes(2,byteorder="big")
zzz=n1b[1]*n2b[1]+((n1b[0]+n1b[1])*(n2b[0]+n2b[1])-n1b[0]*n2b[0]-n1b[1]*n2b[1])*256+n1b[0]*n2b[0]*256*256
#zzz= n1 умножить на n2

какой подход вы бы посоветовали для подобных задач?
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 1
mindtester
@mindtester
https://youtu.be/UtO6HIp1908?list=RDUtO6HIp1908
для результата умножения двух int32, всегда надо резервировать int64 и так далее (8х8=>16, 16х16=>32)

ps результат умножения просто рассматриваете как массив из 2х элементов базовой размерности
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы