<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>a ver con esto<div><br></div><div><div>uint64_t a=44444444;</div><div>uint64_t b=55555555;</div>uint64_t c = a % b;</div><div><br></div><div>sale el resto de la division.</div><div><br></div><div>lo q yo kiero es multiplicar a*b y elresultado se supone q da 128 bits sobre el papel, en programacion directamente solo t puede dar 64 bits, y seran los primeros 64, pero como consigo los 64 ultimos?</div><div><br></div><div>yo sigo sin saberlo, pero ya no es necesario encontre una libreria hecha por unos suecos q puedes hacer multiplicaciones d tantos bits como disponga tu ram. cualkier operacion aritmetrica realmente</div><div><br></div><div><br></div><div>gmplib.org para el q le interese<br><br><div><hr id="stopSpelling">From: programante@gmail.com<br>Date: Sat, 14 Feb 2015 00:45:48 +0100<br>To: cconclase@listas.conclase.net<br>Subject: Re: [C con Clase] multiplicar 2 variables<br><br>
  
    
  
  
    El 06/01/15 16:09, pepe perez escribió:
    <blockquote cite="mid:DUB125-W485F44334A17823D810E6CB9590@phx.gbl">
      <style><!--
.ExternalClass .ecxhmmessage P {
padding:0px;
}

.ExternalClass body.ecxhmmessage {
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">
      <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>
  

<br>_______________________________________________
Lista de correo Cconclase Cconclase@listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ</div></div>                                     </div></body>
</html>