Perché ottale ed esadecimale? I computer usano decimali binari e umani


16

Perché usiamo altre basi che non sono né binarie (per computer) né decimali (per l'uomo)?

I computer finiscono per rappresentarli in binario e gli umani preferiscono fortemente ottenere la loro rappresentazione decimale. Perché non attenersi a queste due basi?


Tendo a pensare che non vi sia alcun motivo valido per usare hex o qualcosa con un'alta quantità di glifi per i numeri. Ancora di più, tendo a pensare che il rappresentante binario possa sostituire altre notazioni per il caso generale in futuro.
Mikhail V

@MikhailV Una rappresentazione esadecimale è MOLTO più concisa di una rappresentazione binaria. Direi che è una ragione abbastanza solida per usare un numero maggiore di glifi rispetto, per esempio, a 2.
Ben Jones,

Risposte:


19

I numeri ottali (base-8) ed esadecimali (base-16) sono un ragionevole compromesso tra il sistema binario (base-2) utilizzato dai computer e il sistema decimale (base-10) utilizzato dalla maggior parte degli umani.

I computer non sono bravi con più simboli, quindi la base 2 (dove hai solo 2 simboli) è adatta a loro mentre le stringhe più lunghe, i numeri con più cifre, sono meno un problema. Gli umani sono molto bravi con più simboli, ma non sono così bravi a ricordare corde più lunghe.

Ottale ed esadecimale usano il vantaggio umano di poter lavorare con molti simboli mentre è ancora facilmente convertibile avanti e indietro tra i binari, perché ogni cifra esadecimale rappresenta 4 cifre binarie ( ) e ogni cifra ottale rappresenta 3 ( 8 = 2 3 ). Penso che hex esca sull'ottale perché può essere facilmente utilizzato per rappresentare byte e numeri a 16/32/64 bit.16=248=23


8
Ad esempio, considerare i valori esadecimali di RGB. È facile ricordare che il bianco è #FFFFFF. È più difficile ricordare che il bianco è 16777215 in decimale. Vuoi rimuovere il componente rosso di # EF439A? Ottieni # 00439A, ovvero cambi le prime due cifre in 0. In decimale, dovrai sottrarre 15663104. Buona fortuna ricordalo.
jmite,

3
Per essere precisi, i colori in notazione decimale utilizzerebbero le triple e il bianco sarebbe (255, 255, 255). Concateniamo i valori esadecimali solo perché sono sempre 2 cifre. Potremmo fare lo stesso con i decimali usando gli 0, quindi il bianco sarebbe 255255255 anziché 16777215.
Spidey,

@Spidey Esatto. Inoltre il mio cervello può analizzare qualcosa di simile (127.255.255) molto più facile e posso anche immaginare come apparirà il colore, poiché posso vedere la percentuale della quantità di inchiostro e non devo calcolarlo in esadecimale nella mia testa.
Mikhail V

13

Li usiamo per comodità e brevità.

Hex e Oct sono rappresentazioni compresse davvero eccezionali di binario. L'esagono in particolare si adatta bene a forme condensate di indirizzi di memoria. Ogni cifra ottica viene mappata direttamente su 3 bit binari e ogni cifra esadecimale su 4 bit binari. Questo è il risultato delle basi (8 e 16) che sono potenze di 2 ( e 2 4 ). Ad esempio, posso scrivere il binario 01101001 come esadecimale 69 o se lo estendo con uno zero iniziale come 151 ott .23240110100169151

Quindi, supponiamo che tu abbia bisogno di indirizzi di memoria a 64 bit. Puoi guardare tutti e 64 i bit binari o farlo condensare a 16 cifre esadecimali. Spesso non è necessario confrontare alcuni indirizzi per vedere se sono uguali o contigui. Preferiresti guardare 64 bit o 16 cifre?


5
Octal ha il vantaggio di non aggiungere simboli numerici e potrebbe essere stato più pratico nei giorni di caratteri a 6 bit (e comuni parole non-power-of-two, ad esempio PDP-8 a 12 bit, PDP a 18 bit- 1 [registri indirizzi per CDC 6x00], 36-bit PDP-6, registri operando 60-bit per CDC 6x00). Il passaggio a caratteri / byte di ottetti e la potenza di due parole rende l'esadecimale più attraente.
Paul A. Clayton,

"Preferiresti guardare 64 bit o 16 cifre?" Certamente guarderei i bit raggruppati. Ma non posso usare la notazione "01", che è brutta e mi fa male agli occhi. E non dico nemmeno quanto esagono fa male ai miei occhi.
Mikhail V

@MikhailV: Cosa intendi con "notazione" 01 "? Dici che preferiresti guardare i bit ma non nella notazione "01" "- quale notazione utilizzeresti. Se dici che l'esagono fa male ai tuoi occhi non posso fare a meno di pensare che potresti aver praticato un po 'di più sui decimali che sull'esagono. (In realtà ho pensato che fosse il sesso (solista) a dire che fa male ai tuoi occhi, ma questa è un'altra storia.)
PJTraill

Preferisco questo alla risposta attualmente più popolare di dtech perché enfatizza la facilità d'uso, ma potresti aver sottolineato che non solo le rappresentazioni più brevi ma anche la maggiore varietà di cifre rendono più facile sapere dove sei quando leggi un numero in esadecimale o ottale.
PJTraill,

@ PaulA.Clayton: buoni punti; un altro vantaggio del PDP-11 era che anche se le parole (unità operativa naturale) erano 16 bit, la maggior parte dei codici di istruzione rientrava naturalmente in un'operazione a 2 bit e quattro gruppi a 3 bit che rappresentavano il numero di registro e la modalità indirizzo, entrambi i quali avevano 8 possibilità, di due argomenti. Il mio preferito: 014747 = MOV - (PC), - (PC), che riempie la memoria con se stesso (se consentito).
PJTraill,

5

I numeri binari nel testo sono uno spreco di spazio.

Il decimale non mostra alcuna relazione con potenze di . Spesso il fatto che un numero sia, diciamo 5 2 n - 1 , è più importante di quanto sia.252n-1


2

introduzione

Come già accennato da altre risposte, possono esserci diverse notazioni per scopi e vincoli diversi. Le notazioni sono in realtà una codifica come una sequenza di caratteri e sappiamo dallo studio degli algoritmi e della struttura dei dati che ci sono molti modi in cui possiamo codificare concetti astratti, un elenco o un set, ad esempio, a seconda di cosa vogliamo farci . In questo caso è principalmente convenienza algoritmica.

Quando si considera la rappresentazione dei numeri, lo stesso vale. All'interno del computer, tutto è binario al livello più basso, sebbene rappresentazioni più strane possano essere utilizzate per alcune applicazioni.

Al di fuori del computer, utilizziamo qualsiasi tipo di rappresentazione umana comprensibile, a seconda della convenienza umana per quanto riguarda il tipo di valore rappresentato. La rappresentazione binaria è spesso troppo lunga e non strutturata per essere letta e scritta facilmente, facendo quindi posto a esadecimali o ottali. La scelta può spesso avere a che fare con il modo in cui le informazioni sono strutturate in una parola binaria, che non è necessariamente destinata a rappresentare un numero.

Ma, considerando solo i numeri , ovvero la rappresentazione dei numeri, vale la pena guardare altri sistemi di rappresentazione dei numeri per capire che i principali fattori sono: fisiologia, abitudine e convenienza. La convenienza è ovviamente il fattore principale che crea diversità, in quanto dipende dal contesto di utilizzo.

Uno sguardo più ampio

2n

Il corpo della domanda non sembra in alcun modo limitato ai computer, e gli umani sono stati e stanno ancora usando molti altri sistemi di numerazione. Alcuni di essi vengono persino utilizzati all'interno dei computer, ad esempio quando si tratta di numeri interi lunghi (per non parlare di numeri non interi ).

Una prima osservazione è che quando le persone contano in migliaia, o milioni come unità, questo è ancora considerato decimale, perché questi sono poteri di 10. Quindi ci si potrebbe chiedere perché l'ottale o l'esadecimale non debba essere considerato solo una variazione binaria. Una possibile ragione potrebbe essere il numero di simboli usati per rappresentare i numeri (anche se questo è un problema discutibile, come vedremo con altri sistemi).

Quindi, per quanto riguarda gli umani, usano diversi sistemi nella base 5, chiamati sistemi quinari . In realtà, la maggior parte di questi sistemi ha due basi, la seconda è 2 o 4, alternata alla base cinque, il che le rende equivalenti alla base 10 (decimale) o alla base 20 (vigesimale). Indovina da dove viene :)

Questi sistemi a doppia base sono chiamati sistemi quiz-quinari o quadriquinari. Il quinary puro viene usato raramente.

Il numero romano può essere visto come un sistema bi-quinary (che è un'indicazione su come fare l'aritmetica con loro). L'abaco cinese e giapponese usa il bi-quinary. Il Quadriquiario fu usato dai Maya.

Le ragioni per usare un sistema sono probabilmente molte. Una buona ragione è che è stato il primo progetto locale e le persone sono ormai abituate. Ad esempio, ci si potrebbe chiedere anche perché le persone di lingua inglese utilizzano ancora un sistema di numerazione estremamente strano quando provano a misurare le distanze. Si potrebbe sostenere che si tratti di più unità, non di numerazione, ma è un'osservazione molto debole. I numeri sono usati principalmente per misurare le cose.

Altre ragioni per mantenere un sistema sono la convenienza in un determinato contesto. Potrebbe esserci un compromesso tra il numero di simboli diversi o le posizioni su un abaco e il numero di simboli che si verificano per formare numeri sufficientemente grandi. Base 2 funziona con 2 simboli distinti, ma presenta molte occorrenze, che possono essere scomode per una rappresentazione materiale. La base 20 di Vigesimal richiederebbe venti simboli e tabelle di moltiplicazione molto grandi che la gente non ricorderebbe. Ma un sistema bi-quinary o quadri-quinary è molto più gestibile, soprattutto per costruire l'abaco. Il sistema quinario puro sarebbe probabilmente ancora migliore, ma va contro le abitudini e l'intuizione basate sulla fisiologia. Ed è sempre bello poter usare le dita per contare, quando non conosciamo meglio.

Ma non è tutto.

Un sistema molto vecchio e molto comune è il sistema sessagesimale utilizzato per misurare il tempo e gli angoli (ma sappiamo che sono correlati, attraverso la rotazione della Terra). Usa la base 60, ma non usa 60 simboli dato che sono troppi. Quindi si affida a un altro sistema per rappresentare i suoi simboli (come il sistema decimale).

Il cerchio può essere diviso in 6 parti corrispondenti ad angoli di 60 gradi, che sono i più semplici da costruire con triangoli equilateri. Quindi ogni grado è di 60 minuti di arco, ognuno diviso in 60 secondi.

Secondo Wikipedia

Nacque con gli antichi Sumeri nel 3 ° millennio a.C., fu tramandata agli antichi Babilonesi ed è ancora usata, in una forma modificata, per misurare il tempo, gli angoli e le coordinate geografiche.

Considerando l'origine, si trattava di un sistema piuttosto conveniente, in un momento in cui la matematica non entrava quasi mai nell'infanzia. Non solo l'angolo di 60⁰ è facile da disegnare, ma 60 ha molti fattori, quindi ha permesso di dividere in molti modi con numeri interi, senza resto.

12×5=60

Ma ci sono altri modi per arrivare a 60, come il sistema vigesimale-ternario dei babilonesi .

Perché usiamo ancora il sistema sessagesimale. Immagino che ci siamo appena abituati e che potremmo avere troppi problemi contrastanti per giustificare completamente una modifica.

È interessante notare che esiste molta interazione tra i sistemi di numerazione e i sistemi di unità. Ma questo è prevedibile poiché la misura è un ruolo importante per i numeri. Ciò è evidente nell'opposizione tra le metriche decimali e binarie per la dimensione della memoria .


3
Questo potrebbe essere perché il titolo dice "Perché esadecimale, ottale o esadecimale?"
Fizz,

1
@RespawnedFluff Buona osservazione. Quindi le mie domande potrebbero estendersi alla domanda. Non intendevo dire che altre risposte non sono interessanti. Ma una visione più ampia mostra meglio le possibili motivazioni per una varietà di sistemi. Supporta alcune delle risposte già fornite. Fondamentalmente le motivazioni sono abitudine e convenienza. Ma la convenienza dipende molto dal contesto. La dicotomia della dimensione della memoria è di recente creazione e illustra il punto.
babou,

2
La brevità è una virtù, questa domanda non richiede una prosa di 1000 parole, né la maggior parte di essa è molto rilevante. Inoltre non hai risposto alla domanda.
dtech,

"quando le persone contano in migliaia, ..., questo è ancora considerato decimale, perché questi sono poteri di 10. Quindi ci si potrebbe chiedere perché l'ottale o esadecimale non dovrebbe essere considerato solo una variazione del binario." Perché migliaia sono solo l'omissione di cifre, generalmente 0. Questo è diverso dalla base-1000 che userebbe 1000 simboli diversi per ogni numero 0-999.
dtech,

1
@dtech Grazie. Avevo dimenticato l'introduzione o il riassunto che di solito ho davanti alle mie risposte. E questo mi ha portato a un punto importante apparentemente ignorato da altre risposte. Non ogni parola binaria è intesa come un numero. Cercare di ottenere una visione più ampia è ciò che aiuta a trovare i problemi.
babou,

-1

I computer comprendono i numeri binari e in binario, i pesi del numero hanno una potenza di 2, quindi il numero di cifre per rappresentare un numero può essere elevato a seconda del numero.

Ad esempio, 64 in decimale possono essere rappresentati da 7 bit mentre per rappresentare il numero 5000 sono necessari 13 bit.

Il sistema numerico ottale ed esadecimale è un modo compatto di rappresentare un numero binario.


2
In che modo questa risposta [What advantage is there to using a base different from ten or (a power of) two?]- o in che altro modo interpreti Why not stick to [bases 2 and 10]??
Greybeard
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.