[C con Clase] multiplicar 2 variables

Programante programante en gmail.com
Sab Feb 14 00:45:48 CET 2015


El 06/01/15 16:09, pepe perez escribió:
> hola muy buenas,
>
> tengo un problema que me trae de cabeza desde hace tiempo y es el 
> multiplicar 2 variables d 32 bits, que puedan dar un resultado de 64bits
Si las variables son de 32 bits, el resultado será de 32 bits (aunque lo 
almacenes en una variable de 64 bits). Tienes que convertirlas primero a 
64 bits.

> yo lo que hago, viene siendo esto pero me parece demasiado elavorado 
> para hacer una simple multiplicacion
>
> para empezar solo uso 8 digitos en decimal, vamos ni los 32 bits
>
> a=44444444;
> b=55555555;
>
> a1=a%10000;
> a2=a/10000;
> b1=b%10000;
> b2=b/10000;
>
> c=a1 + a2%10000*10000 + b1%10000*10000;
> resto= b2 + a1/10000 + b1/10000;
>
> me parecen excesivas operaciones aritmeticas para conseguir el "resto" 
> de una simple multiplicacion, cuando para conseguir el resto de una 
> division es tan facil como
>
>  resto =a%b

Sí, te estás complicando.

uint64_t a=44444444;
uint64_t b=55555555;
uint64_t c = a % b;

O si no quieres que aa y b sean de 64 bits:
uint64_t c = (uint64_t) a % b;

Lo que tú hacías "a mano" sería si el compilador no soportara valores de 
este ancho. De hecho se hacen esta clase de cálculos cuando se trabaja 
con números de precisión arbitraria (librerías de bigints).

Pero en este caso no hace falta en absoluto :)

Un saludo


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


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