Salve a tutti,questo esempio di conversione da un intero ad un binario utilizza la classe math.pow x leggere un numero intero positivo in base 10 (compreso tra 0 e 2^7-1) calcolando le 8 cifre binarie.
public class numerobin {
public static void main(String[] args){
int numero, cifra, n = (int)Math.pow(2, 7);
char c;
numero = Console.leggiIntero(); // L'esempio è fatto con il numero 67
for (int i = 7; i >=0; i--)
{ cifra = numero/n;
c = (char)(cifra+'0');
numero %=n; n/=2;
Console.scriviUnCarattere(c);
}
Console.nuovaLinea();
}
}
Provo a spiegare cosa ho capito:
La variabile n è uguale ad un intero elevato a potenza (quindi 2^7)
Il ciclo for mi dice k se i=7 ed i>=0 i viene decrementata di 1
Nel corpo troveremo:
cifra = 67/2^7 = 0,45 = 0
c = (char) (0+'0')
numero= 67%2^7= 67
n= 2^7/2= 64
Non credo siano i calcoli giusti anche perchè dopo non so piu come andare avanti.
La conversione da intero a binario ho capito come si fa, basta dividere il numero /2; nle nostro caso se utilizzo 67:
67/2=33=1
33/2=16=1
16/2=8=0
8/2=4=0
4/2=2=0
2/2=1=0
1/2=0=1
ris binario=1100001
Ma nel caso k vi ho esposto non riesco a trovare una logica k mi permetta di capire il suo funzionamento.
Andando a senso nelle ultime due operazioni nel corpo del for:
numero= 67%2^7= 67
n= 2^7/2= 64
Dovrei cambiare il valore del secondo n:
numero= 67%2^7= 67
n= 67/2= 33 // quindi con questo numero ricominciare il ciclo dall'inizio
Inoltre vorrei capire:
for (int i = 7; i >=0; i--)// come faccio a capire k l'int i = 7 è riferito ad n e della classe
math.pow e quinidi al ^7?
Scusate x la lungaggine della domanda..
Grazie

Rispondi quotando
