Cita:
Empezado por DriverOp
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