Da ottale a decimale

Converti qualsiasi numero in base 8 nel corrispondente valore decimale.

Se inserisci parseInt("010") in una vecchia console JavaScript senza indicare la base, potresti ottenere 8 invece di dieci. Questo accade perché in passato uno zero iniziale indicava che il numero andava interpretato in base ottale, un meccanismo che ha generato incomprensioni prima degli aggiornamenti degli standard.

Come funziona la base 8 rispetto al sistema decimale

Nel sistema ottale ogni cifra rappresenta una potenza di 8 anziché di 10. I simboli validi vanno unicamente da 0 a 7, escludendo del tutto le cifre 8 e 9. Se prendiamo il numero ottale 57, il 5 si trova nella posizione delle unità moltiplicate per 8 e il 7 nella posizione delle unità semplici.

Il calcolo corrispondente è (5 × 8) + 7 = 47. Si tratta dello stesso valore espresso da 2F in esadecimale e da 101111 in binario: tre rappresentazioni differenti per definire esattamente la stessa quantità numerica.

Procedura di conversione da ottale a decimale

  1. Digita o incolla il numero ottale nel campo del convertitore.
  2. Clicca sul pulsante per avviare il calcolo sul server.
  3. Prendi nota del risultato espresso in base 10.
  4. Assicurati che il numero di partenza non contenga le cifre 8 o 9, non ammesse nella notazione ottale.

L’origine del bug dello zero iniziale nel codice

Nel linguaggio C, un valore numerico che comincia con uno 0 viene interpretato come ottale: la scrittura 010 corrisponde infatti al valore 8. JavaScript ha replicato a lungo questo approccio, prima che venisse standardizzato e successivamente deprecato.

Il problema si manifestava spesso quando si formattavano stringhe con zeri a sinistra, come date o codici di prodotto, elaborandole senza impostare esplicitamente la base decimale. Con l’introduzione di ECMAScript 5, la funzione parseInt assume per impostazione predefinita la base 10, ma il vecchio comportamento può ancora riemergere nei progetti legacy.

Ambiti in cui si impiega la notazione ottale

  • Permessi sui file Unix — I valori di comandi come chmod e umask sono definiti in base ottale e vengono spesso indicati con uno zero iniziale o con prefissi dedicati.
  • Sorgenti C e C++ — Uno zero posto davanti a un numero intero continua a identificare una notazione ottale per preservare la compatibilità storica del linguaggio.
  • Prefissi moderni espliciti — Linguaggi odierni come Python e le versioni recenti di JavaScript adottano il prefisso 0o per segnalare i letterali ottali ed evitare equivoci.

Domande frequenti sulla conversione ottale

Per quale motivo l’ottale impiega solo i numeri da 0 a 7?

Essendo un sistema a base 8, ammette solo otto simboli distinti. Le cifre 8 e 9 non appartengono a questa base, esattamente come la cifra 2 non è contemplata nel sistema binario.

Dove si incontra ancora oggi la base ottale?

La sua applicazione primaria riguarda la configurazione dei permessi nei file system Unix, oltre a comparire in vecchi sistemi integrati, formati di archivio storici e codice in C.

Cosa causava nello specifico l’anomalia con parseInt?

I vecchi interpreti JavaScript leggevano come ottale qualunque stringa numerica che iniziasse con 0 se richiamata senza specificare la base. Una sequenza come ‘010’ diventava 8, provocando errori nei calcoli decimali.

Quale legame c’è tra la conversione decimale e i permessi chmod?

Il principio matematico alla base delle cifre ottali è lo stesso. Nei comandi chmod, tuttavia, ciascuna cifra viene interpretata come un insieme di permessi di accesso piuttosto che come un numero ordinario.

JavaScript supporta ancora i numeri in formato ottale?

Sì, a condizione di usare il prefisso esplicito 0o, come in 0o57. La sintassi implicita basata sul semplice zero iniziale è deprecata e disattivata nella modalità strict.

Cookie
Abbiamo a cuore i tuoi dati e ci piacerebbe utilizzare i cookie per migliorare la tua esperienza.