<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
El 06/01/15 16:09, pepe perez escribió:
<blockquote cite="mid:DUB125-W485F44334A17823D810E6CB9590@phx.gbl"
type="cite">
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style>
<div dir="ltr">hola muy buenas,
<div><br>
</div>
<div>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</div>
</div>
</blockquote>
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.<br>
<br>
<blockquote cite="mid:DUB125-W485F44334A17823D810E6CB9590@phx.gbl"
type="cite">
<div dir="ltr">
<div>yo lo que hago, viene siendo esto pero me parece demasiado
elavorado para hacer una simple multiplicacion</div>
<div><br>
</div>
<div>para empezar solo uso 8 digitos en decimal, vamos ni los 32
bits</div>
<div><br>
</div>
<div>a=44444444;</div>
<div>b=55555555;</div>
<div><br>
</div>
<div>a1=a%10000;</div>
<div>a2<span style="font-size: 12pt;">=a/10000;</span></div>
<div>b1<span style="font-size: 12pt;">=b%10000;</span></div>
<div>b2<span style="font-size: 12pt;">=b/10000;</span></div>
<div><span style="font-size: 12pt;"><br>
</span></div>
<div>
<div>c=a1 + a2%10000*10000 + b1%10000*10000;<span
style="font-size: 12pt;"> </span></div>
<div>resto= b2 + a1/10000 + b1/10000;</div>
</div>
<div><br>
</div>
<div>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</div>
<div><br>
</div>
<div> resto =a%b</div>
</div>
</blockquote>
<br>
Sí, te estás complicando.<br>
<br>
<div>uint64_t a=44444444;</div>
<div>uint64_t b=55555555;</div>
uint64_t c = a % b;<br>
<br>
O si no quieres que aa y b sean de 64 bits:<br>
uint64_t c = (uint64_t) a % b;<br>
<br>
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).<br>
<br>
Pero en este caso no hace falta en absoluto :)<br>
<br>
Un saludo<br>
<br>
<br>
</body>
</html>