Ver Mensaje Individual
  #4  
Antiguo 05-02-2010
Avatar de DriverOp
DriverOp DriverOp is offline
Miembro
 
Registrado: ago 2007
Posts: 93
Reputación: 17
DriverOp Va por buen camino
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.
Responder Con Cita