Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703

    notazione posizionale base 16

    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.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    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:
    codice:
    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.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    bè basta guardare su wikipedia per avere la risposta cmq..


  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    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.

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    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.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.