Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Большое число  (Прочитано 18951 раз)
0 Пользователей и 1 Гость смотрят эту тему.
User2005
Гость
« : 21-12-2005 16:21 » 

Здраствуйте! Хотелось бы получить набольшую консультацию по большим числам...
Проблема заключается в том,что мне нада уместить где-нть 25-тизначное число. Где-то читал про int128 ,но компилятор не захотел понимать,что это есть такое...
Мне нада что бы число преобразовывалось из текстового поля в число..а потом обратно.
Частоеще говорят про gmp, но  что это такое и с чем это едят разобраться нет вермени.
Заранее спасибо.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 21-12-2005 17:53 » 

Попробуй тип "long long" - 128бит.
Все зависит от компилятора и run-time библиотеки. См. доки на свой компилятор.


Цитата
gmp:

Summary     : Библиотека GNU для осуществления точных вычислений.
Description :
The gmp package contains GNU MP, a library for arbitrary precision
arithmetic which operates on signed integers, rational numbers and
floating point numbers. GNU MP is designed for speed, for both small
and very large operands. GNU MP is fast because it uses fullwords as
the basic arithmetic type, it uses fast algorithms, it carefully
optimizes assembly code for many CPUs' most common inner loops, and
generally emphasizes speed over simplicity/elegance in its
operations.
Характеристика чисел:
экспонента типа long int;
мантиса - цепочка переменной длины из чисел типа int, long int, long long int (в зависимости от платформы).
« Последнее редактирование: 20-12-2007 19:40 от Алексей1153++ » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
User2005
Гость
« Ответ #2 : 21-12-2005 17:57 » 

пробовал... ругается  : ( (
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 21-12-2005 17:59 » 

Кроме того, ничего не мешает тебе хранить число в строковом виде, или в виде байтового массива чисел 0..9, или в BCD формате. Простейшие арифметические операции (особенно для второго варианта) не сложно написать и самому.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 21-12-2005 18:49 » 

Поройся в разделе C/C++ - обсуждение длинных чисел было года полтора назад.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
User2005
Гость
« Ответ #5 : 21-12-2005 19:18 » 

"в виде байтового массива чисел 0..9, или в BCD формате" - честно говоря,мало о чем мне говорит...я тока у самых истоков С++  : ) )
покопаюсь в форуме...Спасиба!
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #6 : 22-12-2005 06:04 » 

RXL,

> Попробуй тип "long long" - 128бит.

это вроде 64 бита , тип __int64
или я чего-то путаю?..



User2005 , а для каких целей тебе большое число, в зависимости от задачи решение разное тут Улыбаюсь
« Последнее редактирование: 22-12-2005 06:07 от Алексей1153 » Записан

npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 22-12-2005 09:58 » 

gmp это gnu multiprecision library -- библиотека типов данных и функций для представления чисел с произвольной точностью

Есть реализация целых больших чисел BIGNUMS в библиотеке OpenSSL.  Это им нужно для реализации алгоритмов шифрования и цифровой подписи с использованием открытых ключей.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 22-12-2005 18:54 » 

Лёха, возможно - не помню. Мне long long лишь раз потребовался и давольно давно.
Проверил: действительно 64 бита...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
User2005
Гость
« Ответ #9 : 22-12-2005 18:58 » 

нада создать калькулятор,обработывающий 25-тизначные числа.

особо времени искать на форуме не было,поэтому не нашел..
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 22-12-2005 19:27 » 

User2005, ну, тогда воспользуйся gmp.
Код:
char *str_x = "1000000000000000000000000"
char *str_y = "2222222222222222222222222"
mpf_t x, y, z;

/* 84 бита мантисы достаточно для хранения 25 десятичных знаков */
mpf_set_default_prec(84);

mpf_init(x);
mpf_init(y);
mpf_init(z);

mpf_set_str(x, str_x, 10);
mpf_set_str(y, str_y, 10);

mpf_add(z, x, y);

gmp_printf("Z = X + Y\nZ = %.*Ff \n", z);
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #11 : 23-12-2005 06:39 » 

нада создать калькулятор,обработывающий 25-тизначные числа.

особо времени искать на форуме не было,поэтому не нашел..

аааа, числа-то цельные или дробные? Улыбаюсь
Записан

User2005
Гость
« Ответ #12 : 23-12-2005 08:36 » 

вводятся цельные...а если допустим делить,то тут уже все может быть...
уже понял,что некорректно задал вопрос...чес говоря это даже не мое..попросили помочь,а времени особа нет
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 23-12-2005 15:57 » 

gmp поддерживает и целые, и действительные числа. В примере я, как раз, использовал типы и ф-ии для действительных.

User2005, ну, ты то же спросил - мы тебе дали советы, а там уж ты сам думай, помогать кому или нет.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
User2005
Гость
« Ответ #14 : 24-12-2005 08:40 » new

Спасиба за помощь!!!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines