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

Длинная арифметика: сложение и умножение чисел - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Организовать цикл http://www.cyberforum.ru/cpp-beginners/thread658132.html
Вот приболел, а на лабы нужно задание, сижу и не понимаю, что от меня хотят и как это делать. http://f1.s.qip.ru/G1CCNmsq.png Попытался написать что-то типо этого // test_101.cpp : Defines the...
C++ Прервать работу програмы У меня вопрос , могу ли я как то прервать работу программы при невыполненни или выполнении условия? if ((defaultTemp > MaxTemp) or (MaxTemp <MinTemp)) std::cout<<"ERROR!!\n\n WRONG ... http://www.cyberforum.ru/cpp-beginners/thread658118.html
Вывести вещественное число, равное делению первой переменной на вторую C++
Здравствуйте. Помогите пожалуйста с лабораторной... В языке С++ полный ноль, ничего не понимаю. Вот сами задания из лабы: 2. Опишите в программе две переменные целого типа и введите их значения с...
C++ Вывести ASCII–код символа в десятичном, восьмеричном и шестнадцатеричном виде
Здравствуйте. Помогите пожалуйста с лабораторной... В языке С++ полный ноль, ничего не понимаю. Вот сами задания из лабы: 3. Опишите в программе переменную символьного типа и введите ее значение...
C++ Посчитать количество занятых клеток кроссворда http://www.cyberforum.ru/cpp-beginners/thread658107.html
Помогите,пожалуйста решить задачу. Кроссворд размещен в квадрате. Строки и столбцы квадрата нумеруются снизу вверх и слева направо, начиная с 1. Поля для слов располагаются горизонтально либо...
C++ Поиск количества битов для типа Всё понятно, кроме вот этого ((log((double)a)/log((double)2))); Мы логарифм числа а(числа 2 147 483 647) делим на логарифм числа 2 (на калькуляторе 9.33/0.3 = 31 (всё это примерно)). 1).Так вот... подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
1245 / 994 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
27.09.2012, 15:37
Применение любых оснований счисления для внутреннего представления вроде байта-слова в Си++ сталкивается со следующей проблемой: переполнения. Они никак не ловятся простыми средствами. Или складывать два uint32_t в один uint64_t и смотреть, что там в старшем бите, или ассемблерные вставки. Первое не особо эффективно, второе требует геморроя для того, чтобы оно было переносимо. Для умножения, естессно, только первый вариант, так что без особой разницы.

Как именно там внутри представляется — это дело десятое. Выводить длинные числа в большинстве случаев надо реже, чем производить операции над ними, так что потери при переводе в десятичную систему по крайней мере морально оправданы. Естественно, они будут значительными, потому что это очень много неудобных делений. Если представлять в десятичном виде, то места будет жрать чуть больше, и скорость чуть меньше: надо ж делать лишнее вычитание основания счисления, тогда как в двоичном виде флаг переполнения заполняется автомагически. Именно поэтому и спорно. Вроде как и чуть медленнее десятичное основание, но я бы не сказал, что драматически: вычитание всё же штука быстрая. Правда, при умножении беда — делить на десятичное основание, — да.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru