ЭК
Элеонора Каширская

Каким образом можно реализовать битовый сдвиг влево для длинной арифметики? Чтобы было быстро)



1) Сдвиг влево - действительно умножение на 2^n. Но возведение в степень делается за O(log(n)), а битовый сдвиг - за O(1).

Le
Lena

Допустим, каждый лимб имеет N бит, а сдвинуть надо на M.
Во-первых, выкидываем floor(M/N) лимбов (или вставляем пустые, если двигаем влево) . Остальные лимбы сдвигаем на M mod N бит с переносом разрядов из соседних лимбов. В любом случае получится намного быстрее, чем деление.

МГ
Маргарита Горр

Битовый сдвиг влево это умножение числа на 2^n, где n - это на сколько бит нужно сдвинуть

Похожие вопросы
access. Есть БД в access...как сделать кнопки сдвига области печати отчета вниз (вверх) влево (вправо) в форме .Спасибо
Длинная арифметика - продолжение
по длинной арифметике
Какое описание матрицы А позволит безошибочно реализовать фрагмент программы
Число -17 в десятичной системе (2 байта) сдвиг влево на 2 X<<2 и результат в десятичную
Какие библиотеки в C++ отвечают за: 1)переменные 2)арифметику
каким образом можно быстро заработать через интернет?
Каким образом реализован аналоговый синтез звука на ПК?
Каким образом в наше время можно реализовать собственный сборник стихов?
Помогите решить задачу на битовый сдвиг для С++