Fragen zu bitoperationen



  • Hallo,

    ich habe ein Problem, ich muss zwei relativ große zahlen mit ein andern Multiplizieren und wollte sie daher erst mal ins Bitformat umwandeln. und sie dann mit einander multiplizieren. Nur trotz googlen habe ich nichts brauchbares gefunden. Die eingeben Zahlen liegen im double format vor, es werden aber nur ganzahlige werte eingelesen. die Zahlen haben längen von bis zu 15 stellen.
    Ich hoffe es kann mir wer helfen.



  • Warum multiplizierts du die Zahlen nicht einfach so, wie sie gekommen sind?

    double x,y,z;
    ...
    z=x*y;
    

    (und wenn du nur mit ganzzahligen Werten rechnen willst, ist wohl 'long' besser geeignet als 'double' (oder gar 'long long', aber der Typ ist afaik nicht im Standard).



  • tim06 schrieb:

    Die eingeben Zahlen liegen im double format vor, es werden aber nur ganzahlige werte eingelesen. die Zahlen haben längen von bis zu 15 stellen.

    dafür brauchste wohl 'long long' oder __int64 weil das in 4 bytes nicht mehr rein passt. so in etwa:

    double a = 1234.0;
    #ifdef GCC
    long long b = (long long)a;
    #else
    __int 64 b = (__int64)a;
    #endif
    


  • tim06 schrieb:

    ... und wollte sie daher erst mal ins Bitformat umwandeln.

    Damit es schneller geht? Intern wird dass sowieso auf Binärzahlen abgebildet, also kannst du einfach die dezimale Schnreibweise nehmen.


Anmelden zum Antworten