Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » *Теория* | Калькулятор с бесконечной точностью

Ответить
Настройки темы
*Теория* | Калькулятор с бесконечной точностью

Пользователь


Сообщения: 74
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


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

-------
Mavlyudov


Отправлено: 18:28, 15-10-2005

 

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Хм, я не до конца понимаю термин "бесконечная точность", я реально достигал точности е-097 (е+097), потом просто идет переполнение, как можно достичь бесконечной точночти на машине с ограниченной разрядной сеткой я не понимаю...., хотя может я чего то не знаю, очень хотел бы услышать еще чьи-нибудь коментарии.

Отправлено: 20:05, 15-10-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 74
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Ну например, у меня есть два 96-ти битных числа. Как их сложить???

-------
Mavlyudov


Отправлено: 21:11, 15-10-2005 | #3


Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


побитово

Основная проблема, как мне видится, не арифметические действия с такими числами, а вывод на экран ответа в системе счисления, основание которой отлично от степени двойки.


Последний раз редактировалось Savant, 15-10-2005 в 22:01.


Отправлено: 21:12, 15-10-2005 | #4


Пользователь


Сообщения: 74
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Ну хоть чт0-то подскажите. Я знаю, что есть какая-то функция тип ads в ассемблере.
Как мне понимается, это будет аналог сложению в столбик-по крайней мере алгоритм.
Или же числа будут обрабатываться по частям... а может использовать динамический массив?
хоть что-нибудь подскажите

-------
Mavlyudov


Отправлено: 22:11, 15-10-2005 | #5


Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


Если не трогать пока ассемблер, то для Паскаля (а Вам какой язык ближе?) (сложение беззнаковых любого размера):
Код: Выделить весь код
const
  k = 12;  {12*8=96}
  bit: array[0..7] of Byte = (1,2,4,8,16,32,64,128);
var
  a, b, c: array[0 .. k - 1] of Byte;
  i, j: Byte;
  ost: Boolean;
  a_bit, b_bit: Boolean;
...
  ost := False;
  for i := 0 to k - 1 do begin
    c[i] := 0;
    for j := 0 to 7 do begin
      a_bit := a[i] and bit[j] > 0;
      b_bit := b[i] and bit[j] > 0;
      case Ord(a_bit) + Ord(b_bit) + Ord(ost) of
       {0: }
        1: begin c[i] := c[i] + bit[j]; ost := False end;
        2: ost := True;
        3: begin c[i] := c[i] + bit[j] {; ost := True} end;
      end;
    end;
  end;
  { если здесь ost = true , то у нас переполнение }
end.
в принципе, методика различается в зависимости от того, как хранить данные

Отправлено: 23:03, 15-10-2005 | #6


Пользователь


Сообщения: 74
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Спасибо. Но, если честно, не очень понятно, что здесь реализовано, хотелось бы все-таки понять.
Единственное, что понял-это a,b числа, с-результат. Поясните, если не трудно. Да, и потом как
работать с этим кодом, как задать значения чисел и проверить результат.

-------
Mavlyudov


Отправлено: 23:31, 15-10-2005 | #7


Пользователь


Сообщения: 74
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Я так понял, если a[i] и bit[j] > 0, то a_bit=1, иначе a_bit =0 ?????????

-------
Mavlyudov


Отправлено: 00:59, 16-10-2005 | #8


редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


Обычно это называют длинной арифметикой иделают её по основанию 10 (как вариант - 10^n), а не 2. Потому что входные/выходные данные обычно в десятичном виде, а значаит операции ввода/вывода будет делать проще. Есть много информации в сети об этом. Из легко доступного и понятного могу посоветовать книгу Окулова "Программирование в алгоритмах". Ну или вездесущий Яндекс поможет.

-------
http://ivank.ru


Отправлено: 18:58, 16-10-2005 | #9


Аватара для CyberDaemon

DOOMer


Сообщения: 3254
Благодарности: 438

Профиль | Отправить PM | Цитировать


В институте была задачка, посчитать средствами Паскаля 70! с точностью до знака.
Пришлось учить машину умножать столбиком.
Числа хранили в строковом представлении

-------
"640 K ought to be enough for anybody" Bill Gates, 1981


Отправлено: 09:00, 17-10-2005 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » *Теория* | Калькулятор с бесконечной точностью

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Калькулятор трупа Greyman Юмор 78 04-06-2012 18:52
C/C++ - Калькулятор на С++ PRaetorian Программирование и базы данных 23 31-05-2011 12:26
C/C++ - Калькулятор hhh8486 Программирование и базы данных 5 11-04-2011 01:18
Калькулятор WinStyle prokazzza Проект WinStyle 47 19-02-2011 22:45
Любой язык - [решено] Системное время с точностью до секунд из bat BugSoft Скриптовые языки администрирования Windows 1 15-12-2008 16:55




 
Переход