Discussioni su argomenti di Informatica

Regole del forum

Consulta il nostro regolamento e la guida per scrivere le formule
Rispondi al messaggio

[C++] Quoziente e Resto

28/12/2021, 12:40

Ciao, riflettendo sull'ottimizzazione di una libreria sui "big int" da me scritta, mi sono focalizzato sul fatto che la funzione di divisione (che sfrutta più o meno l'algoritmo della classica divisione in colonna insegnata a scuola) calcola contemporaneamente sia il quoziente che il resto, per poi ritornare l'uno o l'altro in base alla richiesta; quindi se per uno stesso dividendo e divisore mi servono sia quoziente che resto, dovrò eseguire la funzione due volte.
Detto ciò, prima di cimentarmi in soluzioni fantasiose, mi chiedevo se qualcosa di simile avviene anche per la divisione intera nativa e nel caso come viene gestito il tutto?!

Re: [C++] Quoziente e Resto

29/12/2021, 09:30

Ho fatto qualche ricerca, e com'era prevedibile esiste una funzione std::div() che ritorna quoziente e resto mediante un'apposita struct.

Inoltre ho letto che molti compilatori in casi come il seguente
Codice:
int q = a / b;
int r = a % b

sono in grado di ottimizzare il tutto eseguendo una sola divisione.
A tal proposito le due istruzioni devono essere per forza consecutive? Questa ottimizzazione vale solo per la divisione intera nativa o anche in presenza di overload degli operatori / e %?

Re: [C++] Quoziente e Resto

31/12/2021, 19:15

Ogni compilatore si comporta in modo differente e lo stesso compilatore può avere comportamenti differenti in base alla versione e alle opzioni usate per compilare.

Re: [C++] Quoziente e Resto

01/01/2022, 13:31

Quindi in definitiva la cosa migliore rimane implementare qualcosa come std::div() e lasciare all'utente la possibilità di sfruttare o meno tale ottimizzazione?

Re: [C++] Quoziente e Resto

01/01/2022, 14:31

Nel caso di una libreria per big int la soluzione corretta è certamente quella di avere una funzione che restituisce entrambi i valori.
Rispondi al messaggio


Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000— Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.