Ver Mensaje Individual
  #6  
Antiguo 05-02-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Reputación: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por DriverOp Ver Mensaje
Tampoco he usando una de esas unidades, pero sí entiendo cómo se calculan números grandes.

A grandes rasgos, toda operación aritmética, por compleja que sea, se puede reducir a una serie de sumas y restas de enteros, por ejemplo, una multiplicación no es más que una sucesión de sumas, la división una sucesión de restas y a partir de allí salen la potenciación, radización y logaritmo. Incluso si los operandos son reales, basta correr la coma a la derecha tantos dígitos como sea necesario y luego regresar la coma al lugar adecuado.

Sabiendo esto, en una computadora, para usar operandos más grandes que el tipo de dato más grande permitido, hay que imitar las operaciones sumas y restas como se hace "a mano". Por ejemplo, tomar los operandos como strings e ir convirtiendo cada dígito a byte, sumarlos (o restarlos), guardar el acarreo en otro byte y así ir formando el resultado.

Este método puede ser muy lento para el caso de grandes volúmenes de operaciones, por eso se busca optimizar utilizando aritmética de bit para sumar/restar cada dígito en complenento a 2. Porque en el fondo, la ALU del CPU usa este método con todas las operaciones.

De esta forma no importa la cantidad de dígitos que tengan los operandos, tanto puede ser uno como 500.
Totalmente válida tu explicacion y la entiendo perfectamente, pero hay algo que no se esta tomando en cuenta, pues resulta que los registros de la CPU tienen una limitacion, es decir en arquitectura de 32 Bit solo se puede representar 2^32 -1 que es el numero maximo, en arquitectura de 64 bit pues el numero maximo seria 2^64 -1 de cada Registro de la CPU, ahora viene la pregunta-> ¿Que hago si una multiplicacion sobrepasa esa cantidad? . Creo por ahi va el problema. ¿Cómo podemos resolverlo?.
Aunque he visto hace algun tiempo atras un truco en algun libro(el cual no recuerdo)que el resultado de la multiplicacion lo ponian en dos registros de la CPU algo por el estilo. Claro esta que hay que ver la forma y creo que por ahí puede estar la solucion..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita