A cosa servono i numeri ottali (base 8)?


11

Java fornisce modi per scrivere letterali numerici nelle basi 2, 8, 10 e 16.

Mi chiedo perché sia inclusa la base 8 , ad esempio int x = 0123;?

Sto pensando che potrebbe esserci qualcosa di simile al fatto che in esadecimale la capacità di un byte è FF + 1 e così via.


7
Credo che la tua domanda sia "A cosa servono i numeri ottali?"
GetMeARemoteJob il

Sì, è così che avrei dovuto formulare la domanda. Grazie per tutte le risposte interessanti. Ho pensato che potesse avere una base storica, ma non ho avuto l'esperienza necessaria per metterci il dito sopra.
jokinjo,

Risposte:


16

Questa risposta è stata scritta per la domanda originale, "Perché è utile scrivere un numero in base 8?"

Era per rendere familiare la lingua a coloro che conoscevano C ecc. Quindi la domanda è perché supportarla in quelle!

C'erano architetture (vari PDP) che utilizzavano parole a 18 bit di larghezza (e altre parole a 36 bit), quindi sarebbe utile usare letterali con una larghezza di 3 bit.

In pratica, l'unico posto in cui l'ho visto usato nel codice Java è per specificare permessi in stile unix, ad es . 0777, 0644Ecc.

(La risposta ironica al perché è supportata è "ottenere voti positivi su questa domanda ").


Oh, buon punto, ho dimenticato i permessi dei file in Linux! Utilizzo minimo dei bit disponibili ... ottale si adatta al conto.
sarlacii,

1
@sarlacii "un uso minimo" non ha nulla a che fare con esso, il carattere "ottale" di un letterale int esiste solo nel codice sorgente. È semplicemente più facile individuare i permessi indicati da un letterale ottale perché le cifre corrispondono direttamente all'utente, al gruppo e ad altro.
Andy Turner,

Ho fatto la mia prima programmazione su un computer mainframe che aveva un set di caratteri a 60 bit e 6 bit. Gli indirizzi erano 18 bit. Ovviamente abbiamo usato l'ottale. Quando ho incontrato per la prima volta esadecimale era abbastanza strano vedere le lettere in un numero.
Ole VV,

@Andy lo penso ancora come un uso minimo però ... la scelta della lunghezza dei bit non è solo legata al codice. È anche limitato dalla risorsa. per esempio. Potrei scegliere di usare 8 bit per codificare ogni autorizzazione, mascherando i bit non utilizzati, che richiedono 3 byte, o piuttosto usare il minimo, 3 bit, e quindi codificare i numeri ottali, per usare solo 1 byte e mezzo (usando il 4o un po 'appiccicoso). Ma sì, è arbitrario quando vai a livello di bit ... dato che potresti comunque leggere il valore ottale combinato come esadecimale.
sarlacii,

7

"I numeri ottali non sono così comuni come una volta. Tuttavia, Octal viene utilizzato quando il numero di bit in una parola è un multiplo di 3. Viene anche utilizzato come scorciatoia per rappresentare le autorizzazioni dei file sui sistemi UNIX e la rappresentazione di Numeri UTF8, ecc. "

Da: https://www.tutorialspoint.com/octal-number-system


3
Non proprio "numero di bit in una parola", poiché veniva utilizzato su minicomputer a 16 bit sotto forma di un bit alto 0/1 e quindi di un numero ottale 5. Una descrizione migliore potrebbe essere: utilizzata quando la dimensione di un campo in una parola è un multiplo di 8 bit. Quegli stessi computer avevano (frequentemente) 8 registri - quindi un registro specificato in un'istruzione avrebbe un campo a 3 bit per nominare un registro, un'istruzione registro per registro avrebbe due di questi campi a 3 bit; quegli stessi computer avevano spesso un codice operativo a 3 bit o un codice operativo a 3 bit con "escape" (ad es. 0111) su un codice operativo a 6 bit ; ecc. ecc.
davidbak,

4

Storica informatica (scienza). Per rappresentare un gruppo di bit una base 10 non si adatta, la base 8 = 2 3 per 3 bit e la base 16 = 2 4 per 4 bit si adattano meglio.

Il vantaggio della base 8 è che tutte le cifre sono in realtà cifre: 0-7, mentre la base 16 ha "cifre" 0-9A-F.

Per 8 bit di un byte base 16 (esadecimale) è un adattamento migliore e ha vinto. Per Unix base 8 ottale, spesso viene ancora utilizzato per rwxbit (lettura, scrittura, esecuzione) per utente, gruppo e altri; quindi numeri ottali come 0666 o 0777.

L'esadecimale è onnipresente, non da ultimo a causa delle dimensioni delle parole dei computer al giorno d'oggi sono più byte. Il fatto che l'8 bit sia bytediventato uno standard è un'altra storia correlata difficile (2 3 bit e indirizzamento).


0

Risposta originale per "A cosa servono i numeri ottali (base 8)?"

Uso comune di Octal

  • Come abbreviazione di binario: per le macchine informatiche (come UNIVAC 1050, PDP-8, ICL 1900, ecc.), Octal è stato usato come abbreviazione di binario perché la loro dimensione delle parole è divisibile per tre (ogni cifra ottale rappresenta tre binari cifre). Pertanto, due, quattro, otto o dodici cifre potrebbero concisamente visualizzare un'intera parola macchina. Riduce inoltre i costi consentendo l'utilizzo di tubi Nixie, display a sette segmenti e calcolatrici per le console degli operatori, dove i display binari erano troppo complessi da utilizzare, i display decimali richiedevano hardware complesso per convertire i radicali e i display esadecimali necessari per visualizzare più numeri .

  • Rappresentazione di parole a 16, 32 o 62 bit:Tutte le moderne piattaforme informatiche utilizzano parole a 16, 32 o 64 bit, ulteriormente suddivise in byte a otto bit. Su tali sistemi, sarebbero necessarie tre cifre ottali per byte, con la cifra ottale più significativa che rappresenta due cifre binarie (più un bit del byte significativo successivo, se presente). La rappresentazione ottale di una parola a 16 bit richiede 6 cifre, ma la cifra ottale più significativa rappresenta (abbastanza inelegabilmente) solo un bit (0 o 1). Questa rappresentazione non offre alcun modo per leggere facilmente il byte più significativo perché è macchiato su quattro cifre ottali. Pertanto, oggi l'esadecimale è più comunemente usato nei linguaggi di programmazione, poiché due cifre esadecimali specificano esattamente un byte. Alcune piattaforme con una potenza di due parole hanno ancora parole d'ordine che sono più facilmente comprensibili se visualizzate in ottale; questo include la famiglia PDP-11 e Motorola 68000. L'onnipresente architettura x86 dei giorni nostri appartiene anche a questa categoria, ma l'ottale viene raramente utilizzato su questa piattaforma.

  • Descrizioni di codifica: Alcune proprietà della codifica binaria di codici opici nell'architettura x86 moderna diventano più prontamente evidenti quando visualizzate in ottale, ad esempio il byte ModRM, che è diviso in campi di 2, 3 e 3 bit, quindi ottale può essere utile nella descrizione queste codifiche.

  • Calcoli e permessi di accesso ai file: Octal è talvolta usato nell'informatica anziché in esadecimali, forse il più delle volte nei tempi moderni in combinazione con i permessi dei file con i sistemi Unix (nell'autorizzazione di accesso a chmod). Ha il vantaggio di non richiedere simboli aggiuntivi come cifre (il sistema esadecimale è base-16 e quindi ha bisogno di sei simboli aggiuntivi oltre 0-9).

  • Display digitali: i numeri ottali vengono utilizzati anche per visualizzare contenuti digitali su uno schermo poiché ha un numero inferiore di simboli utilizzati per la rappresentazione.

  • Rappresentazione grafica delle stringhe di byte: alcuni linguaggi di programmazione (C, Perl, Postscript, ecc.) Hanno una rappresentazione di testi / grafici in ottale con escape come \ nnn. La rappresentazione ottale è particolarmente utile con byte non ASCII di UTF-8, che codifica per gruppi di 6 bit e dove ogni byte iniziale ha un valore ottale \ 3nn e qualsiasi byte di continuazione ha valore ottale \ 2nn.

  • Aritmetica precoce in virgola mobile: Octal veniva utilizzato anche per virgola mobile nell'Atlante Ferranti (1962), Burroughs B5500 (1964), Burroughs B5700 (1971), Burroughs B6700 (1971) e Burroughs B7700 (1972).

  • In Transponder: i velivoli trasmettono un codice, espresso come un numero di quattro cifre ottali quando interrogato dal radar di terra. Questo codice viene utilizzato per distinguere diversi velivoli sullo schermo radar.

Ulteriori letture: https://en.wikipedia.org/wiki/Octal


1
Mi è piaciuto leggere la voce di Wikipedia, in particolare per quanto riguarda l'uso degli spazi tra le dita per contare. Tuttavia, per la maggior parte, si potrebbe dire che l'articolo è lo slancio della mia domanda. Come sospettavo, l'indivisibilità delle dimensioni delle parole utilizzate nell'attuale architettura informatica rende la rappresentazione ottale non utile e uno dei paragrafi che citi come "parole a 16, 32, 64-bit ..." non è affatto chiaro. Potresti spiegare per favore come "il byte più significativo è imbrattato su quattro cifre ottali" e "Alcune piattaforme con una potenza di due parole hanno ancora le parole d'ordine ..."
jokinjo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.