[Esercizio di algebra di boole]

ErnesFrghsieeee
Buonasera .

Vorrei risolvere un esercizio di algebra di Boole .
Una conversione di un numero decimale a ottale .
Il numero pero' e' con la virgola .

Precisamente :

$ (369.3125)_10 $
Questo numero decimale l'ho convertito in binario .
e mi viene :
la procedura e' abbastanza semplice .
$ 101110001.0101_2 $
Il problema viene adesso :
Il sistema ottale e' dato da

$ 2^3=8 $
Divido il numero binario in gruppi di tre bit .
Per la parte intera nessun problema pero' da parte dopo la virgola e' un problema:

$ |101|110|001|, $

Questo equivale a :

$ 561, ? $

Dove c'e' il punto interrogativo non lo so calcolare . :roll:
Mi aiutate per favore .

Grazie.

Risposte
RenzoDF
Così come converti la parte intera del binario, così converti quella frazionaria, aggiungendo gli zeri necessari a destra, visto che il binario aveva in questo caso un numero di cifre limitato [nota]In un generico caso, andando (potendo) a ricavare una parte frazionaria multipla di tre, o ricordando che sarà presente un'incertezza di conversione.[/nota] a quattro.

Non vedo comunque perché non convertire direttamente dal numero in base 10; il metodo è analogo [nota]In questo caso moltiplicando la parte decimale per 8 e non per 2.[/nota] a quello per la conversione in base due.

ErnesFrghsieeee
Grazie Renzo per aver risposto.

Per il momento vorrei capire questo metodo poi provo direttamente dal numero in base 10.

Scusami pero' non ho ancora capito quanti zeri devo aggiungere e come .

Tu mi suggerisci di :
"così converti quella frazionaria, aggiungendo gli zeri necessari a destra"

Non capisco come arrivare da questo numero :

$ .0101_2 $

A questo numero

$ 3125_10=110000110101_2 $

RenzoDF
"polid":
...
Non capisco come arrivare da questo numero :

$ .0101_2 $

A questo numero

$ 3125_10=110000110101_2 $

Scusa ma non capisco perchè tu vada a considerare quel 3125 in base dieci, tu devi determinare la parte frazionaria in base otto, corrispondente alla parte frazionaria del numero in base dieci $(.3125)_{10}$
e quindi, volendo partire dalla sua rappresentazione in base due, ovvero $(.0101)_2$ (che hai ottenuto dalla conversione), per poterla raggruppare a gruppi di tre, dovrai necessariamente aggiungere altre due cifre a destra; cifre che in questo caso particolare sono due zeri $(.010100)_2$. Da questa rappresentazione, ragruppando $(.[010][100])_2$ avrai che corrisponderà a $(.24)_8$

Come ti diecevo però, potresti passare direttamente dalla rappresentazione in base dieci $(.3125)_{10}$, andando a moltiplicare per otto $ .3125\times 8=2.5$, quindi la prima cifra frazionaria in base otto sarà $2$ e iterativamente, considerando solo la mantissa, $.5\times 8=4.0$, ottenendo la seconda cifra frazionaria della rappresentaziona in base otto pari a $4$ .
Concludendo

$ (369.3125)_10=(561.24)_8 $

E' chiaro che questa conversione risulta corretta solo perchè partiamo da un numero in base dieci che permette di avere una esatta corrispondenza sia in base due che in base otto; per un generico numero in base dieci non è detto che esista una esatta rappresentazione in base due o in base otto, per esempio, se la parte frazionaria da convertire fosse stata $(0.312)_{10}$ ricavare la esatta rappresentazione in base due e otto, non sarebbe stato possibile.

ErnesFrghsieeee
RenzoDF , sei un grande . :smt023

Grazie.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.