Come progetto personale sto lavorando all'implementazione di un tipo di numero di precisione arbitraria per un mio progetto per animali domestici.Come determinare in anticipo se un calcolo senza segno può eventualmente traboccare?
Conosco già tutte le librerie popolari, testate e robuste che fanno questo. Voglio lavorare su una soluzione come progetto di educazione autoformativa.
Sto studiando la zona e cercando di capire se c'è qualche modo per circa prevedere se un'operazione provocherà un overflow prima che io in realtà fare i calcoli. Nemmeno io sono così preoccupato per i falsi positivi.
Desidero poter utilizzare lo spazio più piccolo adatto al calcolo. Se il calcolo rimarrà entro i limiti nativi, lo terrò lì.
Ad esempio: Multiplying two 64 bit Integers if each are large enough will cause an overflow.
Voglio rilevare questo e up-convertire i numeri per il mio tipo di numero solo se il risultato può superare 64 bit di risoluzione. In questo esperimento lavorerò con i numeri firmati.
Qual è il modo più corretto ed efficace per rilevare un overflow/underflow?
Non ha mai provato un progetto simile, quindi ha solo le domande: qual è il punto in cui si conosce l'overflow in anticipo? Ottimizzazione per i piccoli nmbers per essere veloci, o qualcosa di meno ovvio? Hai bisogno di una soluzione esatta, o accettarne una che potrebbe dare falsi allarmi di overflow? – vmatyi
La tua domanda e il tuo commento in risposta a una delle risposte dicono che stai usando gli operandi firmati, ma il titolo dice non firmato. Cos'è questo?L'aritmetica senza segno è probabilmente più facile da gestire ed è probabilmente più adatta per lavorare con numeri arbitrari di precisione. –
Effettuerò i calcoli arbitrari firmati utilizzando i tipi primitivi non firmati come componenti di base, come in una matrice di bit senza segno a 64 bit che rappresentano la base –