Numeri a precisione arbitraria

di il
16 risposte

Numeri a precisione arbitraria

Salve! Devo iniziare un progetto in C , che consiste nel realizzare una libreria con tutte le operazioni aritmetiche su numeri a precisione arbitraria. Il mio problema ,ora, è come rappresentare il numero.
Ho pensato di rappresentarlo in base 100, ma non so se utilizzare una lista o un vettore che contenga le cifre del numero. Mi potete dare un consiglio? Grazie mille.

16 Risposte

  • Re: Numeri a precisione arbitraria

    Non ti conviene usare basi strane, usa l'esadecimale per rappresentare le cifre cosi ogni byte rappresenti due cifre esadecimali...
    e' unan cosa comoda anche per le operazioni numeriche...
    fare somme successive tra esadecimale o binario (che poi e' o stesso in un pc) e' molto piu semplice che fare operazioni in base decimale... e poi che simboli usi per la base 100?
  • Re: Numeri a precisione arbitraria

    Quelli del codice ASCII..
  • Re: Numeri a precisione arbitraria

    E sai quanto fa g x t?
    voglio dire... per fare una cosa del genere prima devi riconvertire l'ascii in esadecimale... (o utilizarne il valore numerico) e poi fare l'operazione...

    il risultato e' che stai comlicando il semplice con l'inutile.

    perche' hai bisogno di una base 100? i computer fanno operazioni di tutti i tipi e lunghezza arbitraria usando solo il binario...
  • Re: Numeri a precisione arbitraria

    E anche se utilizzassi la base 2 o la base 16 come rappresento il numero?
  • Re: Numeri a precisione arbitraria

    Non ho capito perché non puoi usare la base dieci.
  • Re: Numeri a precisione arbitraria

    Ma al di là della base, come lo rappresento? Con che struttura?
  • Re: Numeri a precisione arbitraria

    Ecco questo e' il vero problema...

    come rappresenti un nnumero a lunghezza arbitraria...

    se devi rappresentare piu dei 32 bit della parola macchina usuale... ti servono altri 32.. bit e cosi via...

    quindi dovresti allocare dinamicamente memoria per ogni operazione che supera i 32 bit....

    e devi riscrivere tutte le operazioni...

    cin e cout

    somme sottrazione moltiplicazione e divisione....

    per gestire numeri superiori ai 32 bit...

    come si protrebbe fare?
  • Re: Numeri a precisione arbitraria

    La base è a scelta, posso utilizzarne una qualsiasi, ma non è quello il mio problema
  • Re: Numeri a precisione arbitraria

    Si deve sviluppare una rappresentazione che sia scalabile, cioè che non ponga
    limiti al numero di cifre di un numero. Un'idea è un vettore che contiene le singole cifre del numero intero . Ogni elemento del vettore e una singola cifra, resta da scegliere allo
    studente la base da usare.
  • Re: Numeri a precisione arbitraria

    Allora abbiamo bisogno di sapere... quanti byte ci servono per la rappresentazione del numero... (dinamicamente) poi ci serve un puntatore ad un area di memoria dove conserviamo il numero..
    e le operazioni che si possono fare...

    quindi direi una classe, con un puntatore a long e un unsigned int...
    altri suggerimenti?

    non posso risovlerti tutto il problema... devo solo darti qualche suggerimento..
  • Re: Numeri a precisione arbitraria

    Il vettore e' una soluzione... ma a mio parere un po' inefficiente...
    e anche la rappresentazione in decimale.. potrebbe crearti problema con le operazioni...
    ma decidi tu... e' sempre una soluzione...

    usate un vettore della stl potrebbe aiutare... Vector<int>
  • Re: Numeri a precisione arbitraria

    Va bene grazie mille
  • Re: Numeri a precisione arbitraria

    Usare una lista potrebbe essere piu comodo....

    le lista hanno l'inserimento in testa e in coda... (nel caso in cui volessi usare numeri con la virgola)

    altrimenti se usi solo interi... va bene il vector...
  • Re: Numeri a precisione arbitraria

    Devo lavorare solo con interi..
Devi accedere o registrarti per scrivere nel forum
16 risposte