PDA

Visualizza la versione completa : [C++] notazione posizionale base 16


cleaner
15-10-2008, 17:52
mm, devo programmare in c++ un piccolo software di conversione, tuttavia devo prima capire la teoria che sta alla base della notazione posizionale; da quanto ho capito, a differenza della base 2 e 8, la base 16 usa -->{0,1...9,A,B,C,D,E,F}

ora, come convertire una cosa del genere?
stringa=F5
n=??

nelle altre basi avrei fatto--> 5*16^0 + F*16^1
ma in questo caso, avendo le lettere non funzica

p.s questa mi sembrava la sezione pi consona, in caso avessi sbagliato, scusatemi.

LeleFT
15-10-2008, 18:05
Il tipo di numerazione chiamato appunto "posizionale" tipico di quasi tutte le notazioni (compresa la binaria, ottale, ecc). Tipi di numerazione non posizionale sono, ad esempio, la vigesimale Maia...

Si chiama "posizionale" perch ciascun simbolo cambia di peso a seconda della posizione che occupa nella rappresentazione del numero.

Pensa, ad esempio, alla differenza che c' fra "01" e "10"... i simboli sono gli stessi, ma cambiando la posizione cambiano di peso.

Anche la notazione esadecimale posizionale e tutto ci che devi fare tu associare il giusto peso a ciascun simbolo... non farti confondere: anche se c' scritto "A", non significa che quello non sia un simbolo con un peso: esso vale 10.

Per cui:


0 -> 0
1 -> 1
2 -> 2
3 -> 3
4 -> 4
5 -> 5
6 -> 6
7 -> 7
8 -> 8
9 -> 9
A -> 10
B -> 11
C -> 12
D -> 13
E -> 14
F -> 15
.

Ora tutto torna:
F5 =
F * 16^1 + 5 * 16 ^ 0 =
15 * 16 ^ 1 + 5 * 16 ^ 0 =
245.


Ciao. :ciauz:

Stoicenko
15-10-2008, 18:07
b basta guardare su wikipedia per avere la risposta cmq..

http://upload.wikimedia.org/math/9/2/6/926c9d18f266b8d2505834da7695584f.png

cleaner
15-10-2008, 18:24
ah ok perfetto;) quello che non sapevo quanto di fatto valevano a-b-c... non mi ero propio posto il problema, in quanto sia in base 2 che 8 i numeri occupano la stessa "posizione" (2=2)
grazie.

LeleFT
15-10-2008, 18:30
Originariamente inviato da cleaner
ah ok perfetto;) quello che non sapevo quanto di fatto valevano a-b-c... non mi ero propio posto il problema, in quanto sia in base 2 che 8 i numeri occupano la stessa "posizione" (2=2)
grazie.
Mi sa che non hai capito il discorso del "posizionale"...

9000 (novemila)

un numero diverso da

0090 (novanta)

Nonostante le cifre che li compongano siano le stesse.

Questo perch, nel primo caso, il 9 ha una posizione diversa dallo stesso 9 nel secondo numero.

Nel primo caso, esso occupa la "quarta" posizione (la posizione va letta sempre da destra a sinistra), mentre nel secondo esso occupa la "seconda" posizione.

Il simbolo (la cifra "9") di per se ha sempre lo stesso valore, ma cambia di "peso" a seconda della posizione che occupa. E questo vale per qualunque sistema di numerazione posizionale: sia esso la base 2 (notazione binaria), la base 8 (ottale), la base 10 (decimale), la base 16 (esadecimale), la base 256 (ASCII), ecc...


Ciao. :ciauz:

Loading