Discussion:
numeros grandes
(demasiado antiguo para responder)
znôrt
2003-08-22 12:55:29 UTC
Permalink
Hola estoy haciendo un algoritmo que calcula numeros bastantes grandes pero
llega un momento que me casca ¿como puedo manejar número grandes en c?
A partir de 2^30 (2 elevado a 30) me casca...Ayuda por favor!!!!
Si estás usando enteros, ten en cuenta que el rango máximo de un
entero de 32 bits (sin signo) es 2^32. Tiene lógica, no?

Prueba a usar double, en vez de int o long, o busca alguna librería
para aritmética decimal codificada en binario, que te permitirá una
precisión (prácticamente) arbitraria. Yo no puedo citarte ninguna
ahora mismo, pero si buscas en google por "BCD" seguro que encuentras
bastantes. Es posible incluso que tengas alguna en tu entorno de
desarrollo.

saludos
znôrt
Fernando Arbeiza
2003-08-22 14:31:02 UTC
Permalink
Post by znôrt
Hola estoy haciendo un algoritmo que calcula numeros bastantes grandes pero
llega un momento que me casca ¿como puedo manejar número grandes en c?
A partir de 2^30 (2 elevado a 30) me casca...Ayuda por favor!!!!
Si estás usando enteros, ten en cuenta que el rango máximo de un
entero de 32 bits (sin signo) es 2^32. Tiene lógica, no?
Prueba a usar double, en vez de int o long, o busca alguna librería
para aritmética decimal codificada en binario, que te permitirá una
precisión (prácticamente) arbitraria. Yo no puedo citarte ninguna
ahora mismo, pero si buscas en google por "BCD" seguro que encuentras
bastantes. Es posible incluso que tengas alguna en tu entorno de
desarrollo.
En C99 existe en 'long long' (> 64 bits). Puede que tu compilado lo
soorte. Si no es así tienes librerías; una muy conocida es la de GNU:

<URL: http://www.swox.com/gmp/>

Un saludo.
--
Fernando Arbeiza <URL: mailto:***@ono.com>
Crea tu propio Linux: <URL: http://www.escomposlinux.org/lfs-es>
franci72
2003-08-23 09:15:43 UTC
Permalink
yo tengo hecha una libreria (ftk, Licencia LGPL) que puede manejar
numeros de 2^30, 2^300, 2^3000, ... vamos practicamente lo que de la
maquina. Bueno solo para enteros y permite operaciones de aritmetica
modular, es decir (2^5*10^32)mod(1024) es un numero pequeño, pero no
puedes calcularlo si no realizas el modulo cada vez que multiplique,
pues te lo permite.

http://perso.wanadoo.es/fgomez72

Esta en C/C++ ,es dedir, hay partes en C (Compatible con C++) y partes
en C++ la parte que esta en C++ esta construida sobre la que esta en C
asi que puedes operar directamente en C.


----------------------------------------------------------------------
Me he comparado unos kilos de uranio en africa para hacer unas armas
nucleares y ponerselas a bush, a blair y su amigo ansar, perdon aznar.
(Es mentira, pero ya lo usaran los tres amigos para hacer guerras).
"|
2003-08-23 10:03:16 UTC
Permalink
Hola ;) es que me akabo de bajar tu libreria, pero tengo un problema es que
de linux la verdad
es que no controlo mucho y queria saber como usarla.

Vamos a ver hace falta compilar algo o se puede usar ya asi como está.

Gracias ;)
franci72
2003-08-23 17:58:09 UTC
Permalink
no necesitas linux, casi todo compila perfectamente con C++ Builder
1.0 o superior, en fin casi todo es compatible con casi cualquier
compilador de C++ ya sea linux, unix, mac o windows, siempre que el
compilador no sea demasiando antiguo, con el turbo C++ 1.0 con el que
yo aprendi, no rulan muchos objetos que hacen uso de plantillas. para
cualquier duda no dudes (si redundante) en preguntarme.

----------------------------------------------------------------------
Me he comparado unos kilos de uranio en africa para hacer unas armas
nucleares y ponerselas a bush, a blair y su amigo ansar, perdon aznar.
(Es mentira, pero ya lo usaran los tres amigos para hacer guerras).
franci72
2003-08-23 18:12:39 UTC
Permalink
Se puede usar tal y como esta, simplemente tienes que añadir los .h ,
los .cpp y los .c de lo que utilices. Si algo no te funciona puedes
intentar arreglarlo y mandarme la modificación (y la pondre para las
siguientes versiones, siempre con el correspondiente copyrigth como
manda la LGPL), tambien puedes decirmelo, busco betatesters desde que
la emprece alla por noviembre del 98.

Ah, y no dudes en preguntar cualquier cosa o indicarme cualquier
error, y quedaras inverstido como el primer betatester y si mandas
alguna correccion o codigo para añadir como el lugarteniente del
proyecto :-)

----------------------------------------------------------------------
Me he comparado unos kilos de uranio en africa para hacer unas armas
nucleares y ponerselas a bush, a blair y su amigo ansar, perdon aznar.
(Es mentira, pero ya lo usaran los tres amigos para hacer guerras).
franci72
2003-08-23 21:51:51 UTC
Permalink
tambien puedes encontrarla en el equipo de un colega que tiene un
servidor 24h online en su casa http://francyzone.onlywebs.com

----------------------------------------------------------------------
Me he comparado unos kilos de uranio en africa para hacer unas armas
nucleares y ponerselas a bush, a blair y su amigo ansar, perdon aznar.
(Es mentira, pero ya lo usaran los tres amigos para hacer guerras).
Loading...