Все статьи подряд / Математика / Хабр's Journal
 
[Most Recent Entries] [Calendar View]

Saturday, June 17th, 2023

    Time Event
    11:34a
    Разделяй и властвуй. Повышение эффективности алгоритмов

    Да, мы привыкли, что перемножение двух байт, или двух LONG это операция, которая происходит за константное время и не требует какого то особого алгоритма. Даже в школе мы учили наизусть таблицу умножения, что позволяло нам за константное время получить любой результат умножения двух чисел размером от 1 до 10.

    Но, что если нам надо перемножить два числа любой длины? Не LONG, не байт, не число от 1 до 10, а любые два числа, которое, имеют в общем случае длину n бит, а результат умножения может иметь длину 2n бит.

    В школе все мы проходили алгоритм умножения "столбиком". отличный алгоритм, который нас выручал в докалькуляторную эру, позволяя умножать числа произвольной длины.

    Давайте применим его к нашей задаче.

    В двоичной системе все выглядит проще, чем то, чему нас учили в школе для десятичных чисел. Берем два числа x и y в двоичном представлении. Чтобы получить произведение, нам надо сложить несколько раз числа x сдвинутые влево на позиции всех ненулевых битов y.

    Читать далее

    << Previous Day 2023/06/17
    [Calendar]
    Next Day >>

Все статьи подряд / Математика / Хабр   About LJ.Rossia.org