[C con Clase] [Bulk] Re: [Bulk] 64bits

David Zelion_cracking en yahoo.es
Jue Jun 14 10:14:02 CEST 2007


Hola nuria, vere si tengo el codigo todavía por casa y lo adjunto, mientras
te explico como va por encima.

 

Se crea una clase normal y corriente con su constructor y destructor para
crear un un array dinamico del tamaño que se desee. El tipo del array puede
hacerse con cualquier tipo definido, lo ideal es int ya que el ancho de
palabra es el del tipo de bits del procesador en mi caso 32bits.

 

Ej:

Int tamaño_array = 8;                            // tamaño array

 

Unsigned int* numero1;                                     // Punteros

Unsigned int* numero2;

Unsigned int* resultado;

 

numero1 = new int [tamaño_array];        // Dimensionar el puntero
dinamicamente con 8 enteros 8*32= 256 bytes tendria el numero de largo.

Numero2 = new int [tamaño_array];

Resultado = new int [tamaño_array + 1];       // Tamaño del resultado debe
ser mayor por el possible acarreo

 

Para sumar dos numeros

 

For (int a=0; a< tamaño_array; a++)

{           

      Resultado[a] = numero1[a] + numero2[a];

}

 

Esto es un ejemplo que no seria funcional por que no se a tratado el acarreo
que conlleva sumar dos numeros pero es un ejemplo de la base.

 

Ahora con matematicas:

 

Cada numero seria un carácter (unsigned char) o en el caso de arriba un
entero sin signo unsigned int con lo que tenemos un array de caracteres sin
signo (0 - 255)

 

 

1          3          5          4          9          1

4          5          7          2          3          4          

----------------------------------------------------------------------------
-----

            5          8          2          6          2          5

                        

                        +1(acarreo)                   +1 (acarreo)

----------------------------------------------------------------------------
----------

            5          9          2          7          3          5


 

Esto pero sumando numeros con la base del tamaño del tipo que quieras

 

Unsigned char = base (‘FF’ 255)

Unsigned int = base (‘FFFFFFFF’ 4294967295)

 

Vere si encuentro el codigo y lo analizas

 

 

  _____  

De: cconclase-bounces en listas.conclase.net
[mailto:cconclase-bounces en listas.conclase.net] En nombre de Núria Busom
Figueres
Enviado el: lunes, 11 de junio de 2007 14:30
Para: Lista de correo sobre C y C++
Asunto: [Bulk] Re: [C con Clase] [Bulk] 64bits

 

Bufffff! Esto de la clase numerica tiene pinta de ser lo que estava
buscando, pero con lo que nos han enseñado en clase hasta el momento me veo
incapaz de declararla. Un array del tipo byte donde guardas numeros?? Esto
seria un array de doubles?? Lo siento pero hace muy poco tiempo que
programo. 
Gracias a todos. Parecia ser la práctica más facil de todo el año y
resultara ser la más dificil.

2007/6/11, David <Zelion_cracking en yahoo.es
<mailto:Zelion_cracking en yahoo.es> >:

Yo hice un programa similar pero para calcular sumatorias sobre un triangulo
de pascal modificado, el echo es que se me quedaban cortos los numeros de 8
bytes y tube que crear mi propia clase numerica.

 

Esta consistia en una clase en la cual tenia un array del tipo byte como
miembro privado donde se guardaria en cada byte del array los numeros, al
trabajar con clases se puede hacer una sobrecarga de operadores para
utilizar el objeto como cualquier otro tipo definido, asi pues con este
sistema y haciendo el array parametrizable yo consegui realizar operaciones
con numeros de hasta 128 bytes, cantidad que puede ser modificada pero era
suficiente para mi.

 

 

  _____  

De: cconclase-bounces en listas.conclase.net
[mailto:cconclase-bounces en listas.conclase.net] En nombre de Núria Busom
Figueres
Enviado el: domingo, 10 de junio de 2007 11:23
Para: cconclase en listas.conclase.net
Asunto: [Bulk] [C con Clase] 64bits

 

Hola estoy haciendo un programa recursivo en c++ en Linux. 
Se introduce un numero binario, se guarda en un vector y el programa lo
convierte a decimal. El programa va bien para numeros menores de 32bits y
tiene que funcionar para 64. 
Lo he probado con "double", pero nada. No pasa de 4000millones y pico. He
estado buscando en foros y demás y encontré que no funcionara si no es x64.
La página estaba en ingles y entendí poco
Podeis ayudarme? 
Gracias


_______________________________________________
Lista de correo Cconclase Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net 
Bajas: http://listas.conclase.net/index.php?gid=2
<http://listas.conclase.net/index.php?gid=2&mnu=FAQ> &mnu=FAQ

 

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20070614/3efe15c4/attachment.html>


Más información sobre la lista de distribución Cconclase