Conversione da binario a decimale
Conversione da binario a decimale
Ciao a tutti ragazzi!
Per prima cosa non pensate che sia la solita banalità del cambio di sistema numerico...
Io ho bisogno di convertire un numero binario con MILIONI di bit in formato decimale,
espressamente NON utilizzando la solita formula bit * 2^n...
Come posso fare?
P.S. Il programma è scritto in C e Asm x86...
Grazie mille a tutti! Ciao!
Ciamiz
Per prima cosa non pensate che sia la solita banalità del cambio di sistema numerico...
Io ho bisogno di convertire un numero binario con MILIONI di bit in formato decimale,
espressamente NON utilizzando la solita formula bit * 2^n...
Come posso fare?
P.S. Il programma è scritto in C e Asm x86...
Grazie mille a tutti! Ciao!
Ciamiz
Re: Conversione da binario a decimale
Quindi tu hai una stringona di qualche milione di bit e vuoi ottenerne la rappresentazione decimale, ho capito giusto?ciamiz ha scritto: Ciao a tutti ragazzi!
Per prima cosa non pensate che sia la solita banalità del cambio di sistema numerico...
Io ho bisogno di convertire un numero binario con MILIONI di bit in formato decimale,
espressamente NON utilizzando la solita formula bit * 2^n...
Come posso fare?
P.S. Il programma è scritto in C e Asm x86...
Grazie mille a tutti! Ciao!
Ciamiz
Potrebbe servirti il CORDIC, vedi qui ad esempio (ma c'è anche molta altra documentazione in rete).
Però sarebbe scomodo ruotare davvero una stringa di milioni di bit, dovresti usare un indice invece.
PS pura curiosità, da dove viene la stringona?
EDIT scusa, ho dato per scontata una cosa, per convertire immagino che tu divida ripetutamente per dieci e tenga i resti come cifre decimali, l'algoritmo CORDIC che ti ho linkato serve a dividere.
Ultima modifica di bite il venerdì 28 settembre 2007, 0:23, modificato 1 volta in totale.
Re: Conversione da binario a decimale
Scusami ma penso di essermi espresso male...bite ha scritto:Quindi tu hai una stringona di qualche milione di bit e vuoi ottenerne la rappresentazione decimale, ho capito giusto?ciamiz ha scritto: Ciao a tutti ragazzi!
Per prima cosa non pensate che sia la solita banalità del cambio di sistema numerico...
Io ho bisogno di convertire un numero binario con MILIONI di bit in formato decimale,
espressamente NON utilizzando la solita formula bit * 2^n...
Come posso fare?
P.S. Il programma è scritto in C e Asm x86...
Grazie mille a tutti! Ciao!
Ciamiz
Potrebbe servirti il CORDIC, vedi qui ad esempio (ma c'è anche molta altra documentazione in rete).
Però sarebbe scomodo ruotare davvero una stringa di milioni di bit, dovresti usare un indice invece.
PS pura curiosità, da dove viene la stringona?
EDIT scusa, ho dato per scontata una cosa, per convertire immagino che tu divida ripetutamente per dieci e tenga i resti come cifre decimali, l'algoritmo CORDIC che ti ho linkato serve a dividere.
Io ho questa stringa (vettore) di n-milioni di bit che però sono "impacchettati" in "pacchetti" da 32 bit (variabile unsigned int in C)...
Ora facciamo finta che io abbia io abbia il valore binario di un int, voglio trasformarlo in decimale, faccio
bitn * 231 + bitn - 1 * 230 ...
Il problema è che io avendo ipotizziamo 8.000.000 di bit quindi un vettore di usigned int con 250.000 elementi, non posso fare bit8.000.000 * 27.999.999!
Quindi chiedo nuovamente se è possibile, e se si come, posso convertire un numero binario con n-milioni di cifre in decimale cosicchè da poterlo salvare o stampare a video?!?
Grazie mille nuovamente a tutti! Ciao!
Ciamiz
Re: Conversione da binario a decimale
Potresti sfruttare i registri:
Codice: Seleziona tutto
unsigned int bin = numero da convertire
unsigned int pos = 0;
unsigned int dec = bin & 1;
while(bin)
{
dec += (pos++ << 1) & (bin & 1);
bin >>= 1;
}
Ultima modifica di mod il venerdì 28 settembre 2007, 1:48, modificato 1 volta in totale.
- Guiodic
- Accecante Asceta

- Messaggi: 28474
- Iscrizione: martedì 24 aprile 2007, 15:28
- Località: Roma
- Contatti:
Re: Conversione da binario a decimale
Ma per numero decimale cosa intendi di preciso? Perché se pretendi di trasformarlo memorizzandolo in un unica variabile è impossibile, il numero sarebbe troppo grande.ciamiz ha scritto:Scusami ma penso di essermi espresso male...bite ha scritto:Quindi tu hai una stringona di qualche milione di bit e vuoi ottenerne la rappresentazione decimale, ho capito giusto?ciamiz ha scritto: Ciao a tutti ragazzi!
Per prima cosa non pensate che sia la solita banalità del cambio di sistema numerico...
Io ho bisogno di convertire un numero binario con MILIONI di bit in formato decimale,
espressamente NON utilizzando la solita formula bit * 2^n...
Come posso fare?
P.S. Il programma è scritto in C e Asm x86...
Grazie mille a tutti! Ciao!
Ciamiz
Potrebbe servirti il CORDIC, vedi qui ad esempio (ma c'è anche molta altra documentazione in rete).
Però sarebbe scomodo ruotare davvero una stringa di milioni di bit, dovresti usare un indice invece.
PS pura curiosità, da dove viene la stringona?
EDIT scusa, ho dato per scontata una cosa, per convertire immagino che tu divida ripetutamente per dieci e tenga i resti come cifre decimali, l'algoritmo CORDIC che ti ho linkato serve a dividere.
Io ho questa stringa (vettore) di n-milioni di bit che però sono "impacchettati" in "pacchetti" da 32 bit (variabile unsigned int in C)...
Ora facciamo finta che io abbia io abbia il valore binario di un int, voglio trasformarlo in decimale, faccio
bitn * 231 + bitn - 1 * 230 ...
Il problema è che io avendo ipotizziamo 8.000.000 di bit quindi un vettore di usigned int con 250.000 elementi, non posso fare bit8.000.000 * 27.999.999!
Quindi chiedo nuovamente se è possibile, e se si come, posso convertire un numero binario con n-milioni di cifre in decimale cosicchè da poterlo salvare o stampare a video?!?
Grazie mille nuovamente a tutti! Ciao!
Ciamiz
Quindi immagini che lo vuoi trasformare in bcd.
Re: Conversione da binario a decimale
Diciamo che lo voglio trasformare in base 10 in modo tale che sia stampabile a video o salvabile su file... Facciamo che mettiamo ogni cifra ( che dovrà essere in base 10 ) in un elemento di un vettore di char...Guiodic ha scritto:Ma per numero decimale cosa intendi di preciso? Perché se pretendi di trasformarlo memorizzandolo in un unica variabile è impossibile, il numero sarebbe troppo grande.ciamiz ha scritto:Scusami ma penso di essermi espresso male...bite ha scritto:Quindi tu hai una stringona di qualche milione di bit e vuoi ottenerne la rappresentazione decimale, ho capito giusto?ciamiz ha scritto: Ciao a tutti ragazzi!
Per prima cosa non pensate che sia la solita banalità del cambio di sistema numerico...
Io ho bisogno di convertire un numero binario con MILIONI di bit in formato decimale,
espressamente NON utilizzando la solita formula bit * 2^n...
Come posso fare?
P.S. Il programma è scritto in C e Asm x86...
Grazie mille a tutti! Ciao!
Ciamiz
Potrebbe servirti il CORDIC, vedi qui ad esempio (ma c'è anche molta altra documentazione in rete).
Però sarebbe scomodo ruotare davvero una stringa di milioni di bit, dovresti usare un indice invece.
PS pura curiosità, da dove viene la stringona?
EDIT scusa, ho dato per scontata una cosa, per convertire immagino che tu divida ripetutamente per dieci e tenga i resti come cifre decimali, l'algoritmo CORDIC che ti ho linkato serve a dividere.
Io ho questa stringa (vettore) di n-milioni di bit che però sono "impacchettati" in "pacchetti" da 32 bit (variabile unsigned int in C)...
Ora facciamo finta che io abbia io abbia il valore binario di un int, voglio trasformarlo in decimale, faccio
bitn * 231 + bitn - 1 * 230 ...
Il problema è che io avendo ipotizziamo 8.000.000 di bit quindi un vettore di usigned int con 250.000 elementi, non posso fare bit8.000.000 * 27.999.999!
Quindi chiedo nuovamente se è possibile, e se si come, posso convertire un numero binario con n-milioni di cifre in decimale cosicchè da poterlo salvare o stampare a video?!?
Grazie mille nuovamente a tutti! Ciao!
Ciamiz
Quindi immagini che lo vuoi trasformare in bcd.
Poi per stampare a video o su file aggiungiamo 0x30 ed abbiamo l'ASCII della cifra...
Si comunque anche in BCD va bene perchè non ricordo di preciso la connessione con l'ASCII però anche lì mi pare ci sia...
Grazie mille a tutti! Ciao!
Ciamiz
Re: Conversione da binario a decimale
sì, l'avevo immaginato.ciamiz ha scritto:Scusami ma penso di essermi espresso male...bite ha scritto:Quindi tu hai una stringona di qualche milione di bit e vuoi ottenerne la rappresentazione decimale, ho capito giusto?ciamiz ha scritto: Ciao a tutti ragazzi!
Per prima cosa non pensate che sia la solita banalità del cambio di sistema numerico...
Io ho bisogno di convertire un numero binario con MILIONI di bit in formato decimale,
espressamente NON utilizzando la solita formula bit * 2^n...
Come posso fare?
P.S. Il programma è scritto in C e Asm x86...
Grazie mille a tutti! Ciao!
Ciamiz
Potrebbe servirti il CORDIC, vedi qui ad esempio (ma c'è anche molta altra documentazione in rete).
Però sarebbe scomodo ruotare davvero una stringa di milioni di bit, dovresti usare un indice invece.
PS pura curiosità, da dove viene la stringona?
EDIT scusa, ho dato per scontata una cosa, per convertire immagino che tu divida ripetutamente per dieci e tenga i resti come cifre decimali, l'algoritmo CORDIC che ti ho linkato serve a dividere.
Io ho questa stringa (vettore) di n-milioni di bit che però sono "impacchettati" in "pacchetti" da 32 bit (variabile unsigned int in C)...
Per trasformarlo in rappresentazione decimale puoi dividere il numero per 10, il resto è la cifra decimale meno significativa (la più a destra). Poi dividi di nuovo per dieci, il resto è la seconda cifra decimale da destra, e così via.Ora facciamo finta che io abbia io abbia il valore binario di un int, voglio trasformarlo in decimale, faccio
bitn * 231 + bitn - 1 * 230 ...
Effettuare divisioni su stringhe di bit così lunghe non è semplice. L'algoritmo CORDIC che ti ho indicato è una possibilità. C'è però da scrivere del codice.
In alternativa, potresti usare un CAS come Mathematica, Maple o forse anche Maxima (wxMaxima) che hanno già la possibilità di stampare in qualsiasi base numeri a precisione arbitraria. Ma in questo caso sarebbe più comodo usare il CAS per fare tutti i conti, non solo per visualizzare il risultato.
Il problema è che io avendo ipotizziamo 8.000.000 di bit quindi un vettore di usigned int con 250.000 elementi, non posso fare bit8.000.000 * 27.999.999!
Quindi chiedo nuovamente se è possibile, e se si come, posso convertire un numero binario con n-milioni di cifre in decimale cosicchè da poterlo salvare o stampare a video?!?
Grazie mille nuovamente a tutti! Ciao!
Ciamiz
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti

