Algoritmi di conversione in basi numeriche diverse

8
Algoritmi di conversione in basi numeriche diverse Lab Programmazione - turno 2 aa 2008/2009

description

Algoritmi di conversione in basi numeriche diverse. Lab Programmazione - turno 2 aa 2008/2009. Conversione da base X a base 10. Input : stringa di “cifre” e base numerica (int) Es “12B” (numero)16 (base) Output: valore intero corrispondente in base 10 - PowerPoint PPT Presentation

Transcript of Algoritmi di conversione in basi numeriche diverse

Page 1: Algoritmi di conversione in basi numeriche diverse

Algoritmi di conversione in basi numeriche diverse

Lab Programmazione - turno 2

aa 2008/2009

Page 2: Algoritmi di conversione in basi numeriche diverse

AA2006/07

Lab ProgrammazioneL. Capra

2

Conversione da base X a base 10

• Input : stringa di “cifre” e base numerica (int)• Es

“12B” (numero) 16 (base)

• Output: valore intero corrispondente in base 10

1 · 162 + 2 · 161 + 11 · 160 = 299

(n.b. 11 è il valore corrispondente alla cifra ‘B’)

• Cosa bisogna usare: i metodi length, charAt, indexOf della classe String

Page 3: Algoritmi di conversione in basi numeriche diverse

AA2006/07

Lab ProgrammazioneL. Capra

3

Conversione da base X a base 10

• algoritmo per convertire un qualunque numero scritto in base x (2 ≤ x ≤ 16) in base decimale

• Insieme dei simboli

base 2: ‘0’,’1’

base 3: ‘0’,’1’,’2’

base 11: ‘0’,…,’9’,’A’

base 16: ‘0’,…,’9’,’A’,…,’F’

Page 4: Algoritmi di conversione in basi numeriche diverse

AA2006/07

Lab ProgrammazioneL. Capra

4

Conversione da base X a base 10

• Bisogna controllare che i simboli presenti nella stringa da convertire siano consistenti rispetto alla base• ad es. se la base è 8 solo i simboli ‘0’,..,’7’ potranno

comparire nella stringa

• Bisogna trovare un modo per associare a ogni simbolo il corrispondente valore• ad es. il valore di ‘A’ è 10, quello di ‘F’ è 15

Page 5: Algoritmi di conversione in basi numeriche diverse

AA2006/07

Lab ProgrammazioneL. Capra

5

Conversione da base X a base 10

• Idea: rappresentare l’insieme dei simboli (cifre) con una stringa di caratteri (basi da 2 a 16)

• String simboli = “0123456789ABCDEF”;

• valore numerico di una cifra ≡ posizione carattere corrispondente nella stringa simboli

• usando la funzione indexOf è semplicissimo trovare il valore numerico di un simbolo-cifra

• Es. indexOf(simboli , ‘A’) 10

Page 6: Algoritmi di conversione in basi numeriche diverse

AA2006/07

Lab ProgrammazioneL. Capra

6

Conversione inversa: da base 10 in base X

• Input : numero intero e nuova base• Es: 299

16

• Output: stringa di cifre corrispondente al num. in base x• Es. (base 16) : “12B“

• Algoritmo: 299 16 18 16

1 16

“12B”

11 (B)2

1

resti

Page 7: Algoritmi di conversione in basi numeriche diverse

AA2006/07

Lab ProgrammazioneL. Capra

7

Conversione da base 10 a base X

• Problema: dato il valore del resto (es. 11), come troviamo il simbolo corrispondente (‘B’)?

• Soluzione

• usiamo il metodo charAt e nuovamente la stringa simboli

• Es. charAt(simboli,11) ‘B’

Page 8: Algoritmi di conversione in basi numeriche diverse

AA2006/07

Lab ProgrammazioneL. Capra

8

Conversione da base x a base y

• Input: una stringa di cifre, la vecchia base (int x) e la base in cui vogliamo convertire (int y)

• Algoritmo (semplicissimo)

• convertiamo la stringa da base x a base 10 • detto z il risultato (int), convertiamo z in base y• output: una stringa di cifre