Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Как доделать длинную целочисленную арифметику? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти 100 первых простых чисел http://www.cyberforum.ru/cpp-beginners/thread751004.html
найти 100 первых простых чисел
C++ Оператор while Поскольку я еще начинающий, то задам такой вопрос: В цикл while мне нужно поставить несколько условий, вот, что я пишу: while (a1 = a2; a1 = a3; a1 = a4; a1 = a5; a1 = a6; a1 = a7; a1 = a8; a1 =... http://www.cyberforum.ru/cpp-beginners/thread751001.html
C++ По результату определить загаданное число
Клоун предложил каждому из публики задумать число. Потом он сказал: «Прибавьте к задуманному числу 5. Теперь из результата вычтите 2. А теперь к результату прибавьте 7». Потом клоун спросил у...
C++ Возврат массива из функции
Есть задача: используя функции, вычислить количество элементов заранее введённых массивов, которые кратны Х, и переписать в отдельный массив индексы отрицательных элементов этих массивов. Вот код: ...
C++ Определить наименьшее общее кратное двух натуральных чисел http://www.cyberforum.ru/cpp-beginners/thread750958.html
вот мой код. выдаёт одну ошибку. помогите пожалуйста найти. #include<iostream.h> main(int nok) { int a, b, nod, nok; cout<<"Vvedite chislo a"; cin>>a; cout<<"Vvedite chislo b";
C++ Нужно написать обход шахматной доски конем. На одну позицию можно стать один раз. Обеспечить алгоритм бектрекингу Добрый вечер! очень прошу помогите реализовать программу на с \ с + +. подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
02.01.2013, 14:50
Цитата Сообщение от taras atavin Посмотреть сообщение
Задачу пока представляю в общих чертах. Но может быть это неизбежно? Ведь килопарсек как то тоже надо будет представить. 3*1460/4*24*60*60*300*1000?
Лучше сделайте масштаб. Глупо моделировать броуновское движение в стакане сока у адмирала на мостике, когда вы рисуете траекторию корабля на галактической карте.

Цитата Сообщение от taras atavin Посмотреть сообщение
Что здесь возвращается: уменьшенный на 1 операнд, или его копия?
И это меня спрашивает автор кода
Вообще-то говоря копия (вы ж не ссылку возвращаете из operator-=()). Оригинал тоже изменяется.

Цитата Сообщение от taras atavin Посмотреть сообщение
Но ведь сдвига на 3 бита - это умножение на 8.
Ну, там есть ещё сдвиг на единичку и сложение. На числе побольше видно лучше. Например, 108 = 47 ⋅ 257 ⋅ 213 + 220 + 28 = 28((213 + 25)(25 + 24 - 1) + 212 + 1).

n * 100000000 == ((n << 5 + n << 4 - n) << 13 + (n << 5 + n << 4 - n) << 5 + n << 12 + n) << 8

Итого 6 сдвигов и 5 сложений (если подержать в памяти промежуточное значение) вместо 12 сдвигов и 12 сложений, если делать побитово в лоб. Или трёх умножений (с кучей сложений и переносов внутри, не считая самих умножений) и трёх сдвигов, если множить побайтово.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru