<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>