Pagina 1 di 1

Conversione numerica generalizzata

MessaggioInviato: 10/02/2024, 12:55
da mau21
Buongiorno,
vorrei porre una domanda in merito alla conversione numerica: data una base $A$ io so come passare da quella alla base $10$ e viceversa; mi chiedevo però, nel caso in cui avessi un'altra base $B$ e volessi convertire un numero da $A$ a $B$ (e viceversa) sarei obbligato a passare per la base $10$ o esiste una regola generale di conversione diretta? Grazie mille!

Re: Conversione numerica generalizzata

MessaggioInviato: 10/02/2024, 13:42
da utente__medio
Ciao, in generale le cifre di un numero $N$ in una generica base $b$ sono costituite dai resti in ordine inverso delle divisioni successive di $N$ per $b$ fino all'annullarsi del quoziente.

Quindi alla fine tutto si riduce a delle divisioni, ma ovviamente mentre tutti (in teoria) sono in grado di svolgere delle divisioni in base $10$, lo stesso non si può dire per esempio per basi di $7$ e $31$. Ecco quindi che spesso il passaggio per la base $10$ diventa indispensabile, almeno fin quando si opera su carta.

Re: Conversione numerica generalizzata

MessaggioInviato: 10/02/2024, 14:24
da sellacollesella
Grazie alla rappresentazione annidata di Horner: \[
{\color{red}{1}}{\color{green}{2}}{\color{blue}{3}}{\color{magenta}{4}}_6 = (({\color{red}{1}}\cdot 6 + {\color{green}{2}})6 + {\color{blue}{3}})6 + {\color{magenta}{4}}
\] puoi operare direttamente in base otto: \[
{\color{red}{1}}\cdot 6 + {\color{green}{2}} = 10)6 = 60) + {\color{blue}{3}} = 63)6 = 462) + {\color{magenta}{4}} = 466
\] per ottenere la conversione desiderata: \[
\boxed{1234_6 = 466_8}
\] Però non so quanto sia conveniente, boh. :-)

Re: Conversione numerica generalizzata

MessaggioInviato: 10/02/2024, 16:02
da mau21
Va bene, grazie a entrambi!

Re: Conversione numerica generalizzata

MessaggioInviato: 10/02/2024, 16:54
da mau21
Scusatemi di nuovo, vorrei fare una domanda banale ma che francamente non capisco:
Per convertire $(16)_10$ in $(16)_16$ dovrei utilizzare il metodo delle divisioni ripetute, ma, così facendo:
$16/16=1$ con resto $0$,

$1/16=0$ con resto $1$.
Letti al contrario diventa $(16)_16=10$
Ma in teoria non sarebbe dovuto venire $A$?
Capisco che poi mi basta sostituire $(10)_16=A$ e il risultato viene correttamente, ma, in teoria, non sarebbe dovuto "saltare fuori da solo" durante le divisioni (come resto intendo)?
Grazie mille!

Re: Conversione numerica generalizzata

MessaggioInviato: 10/02/2024, 17:19
da utente__medio
Guarda che $(16)_(10) = (10)_(16)$, esattamente il risultato che si ottiene con l'algoritmo delle divisioni successive.

La $A$ scaturisce da un resto di $10$ come nel seguente caso:

$26/16 = 1$ con resto $10$

$1/16 = 0$ con resto $1$

Ossia $(26)_(10) = ([1][10])_(16) = (1A)_(16)$

Re: Conversione numerica generalizzata

MessaggioInviato: 11/02/2024, 17:30
da mau21
Grazie per il tempo dedicatomi; non capisco questa cosa: l'ultima domanda che ho posto era scaturita da un esercizio d'esame svolto che avevo provato a guardare, il testo è il seguente:
TESTO:
Siano date le seguenti definizioni C

typedef struct {double a; double int b;} miotipo;
miotipo miavar;

dove il tipo double richiede 64 bit. miavar è allocata in memoria centrale a partire dall'indirizzo esadecimale AAAA.0AFF. Calcolare: a)il numero di byte richiesti dalla variabile miavar in decimale: (spazio per la risposta) in esadecimale: (spazio per la risposta)

b) Scrivere l'espressione per calcolare l'indirizzo esadecimale del primo byte che segue quelli allocati per miavar e infine riportare il valore calcolato dell'espressione:
AAAA 0AFF+ .......=.........

Ora, se non ho calcolato male lo spazio occupato è di $(16)_10=(10)_16$ bytes, però, nelle soluzioni, il prof somma all'indirizzo di miavar il valore "A", quindi a questo punto mi chiedo da dove venga.
Mi potreste aiutare per favore?
Grazie mille!

Re: Conversione numerica generalizzata

MessaggioInviato: 12/02/2024, 15:54
da apatriarca
Il numero di byte è uguale a \(2 \times 64 / 8 = 16_{10} = 10_{16}\) come hai effettivamente scritto. Credo che il professore abbia sbagliato nelle soluzioni per il secondo esercizio.