Perché i computer usano il sistema di numeri binari (0,1)?


31

Perché i computer usano il sistema di numeri binari (0,1)? Perché non usano invece Ternary Number System (0,1,2) o altri sistemi numerici?


9
Questa è una domanda sull'ingegneria elettrica. Apparentemente le porte binarie sono più facili da implementare. IIRC alcuni computer basati su ternario erano stati costruiti ad un certo punto.
Yuval Filmus,

7
Che ricerca hai fatto? Quando digito il titolo della tua domanda su Google, ottengo risultati di ricerca che forniscono diverse risposte alla tua domanda. Inoltre, l'articolo di Wikipedia sui numeri binari e sul codice binario ha una breve spiegazione. Ci aspettiamo che tu faccia una notevole quantità di ricerche prima di chiedere qui, e mi sembra che tu non abbia fatto nemmeno ricerche di base prima di chiedere. La ricerca su Google e Wikipedia è un minimo indispensabile.
DW

Le basi più grandi non si sono rivelate utili nel complesso.
Raffaello

@Raphael: Ternary ha fatto
Mooing Duck il

2
Lo inserirò come commento perché c'è già una risposta accettata. È straordinariamente difficile costruire dispositivi elettronici che discriminano in modo affidabile tra dieci valori a causa delle tolleranze di fabbricazione. È relativamente facile costruire dispositivi elettronici che discriminano tra due valori. Quindi, la risposta breve è che i computer usano la rappresentazione binaria per affidabilità . Ho scritto una risposta più dettagliata per coloro a cui potrebbe interessare: bbrown.kennesaw.edu/papers/why_binary.html
Bob Brown

Risposte:


31

Dato che siamo in Informatica, risponderò in questo modo: non lo fanno.

Cosa intendiamo per "computer"? Ci sono molte definizioni, ma nell'informatica come scienza, la più comune è la macchina di Turing.

Una macchina turing è definita da diversi aspetti: un insieme di stati, una tabella di transizione, un insieme di arresto, e importante per la nostra discussione, un alfabeto. Questo alfabeto fa riferimento ai simboli che la macchina può leggere come input e che può scrivere sul suo nastro. (Potresti avere alfabeti di input e nastro diversi, ma per ora non preoccuparti di questo.)

Quindi, posso creare una macchina di Turing con l'alfabeto di input o o o . Non importa Il fatto è che posso usare qualsiasi alfabeto che scelgo per codificare i dati.{ a , b } { 0 , 1 , 2 } { , }{0,1}{a,b}{0,1,2}{,}

Quindi, posso dire che è 9, oppure posso dire che è 9. Non importa, poiché sono solo simboli che possiamo distinguere.0001001↑↑↑↓↑↑↓

Il trucco è che il binario è abbastanza. Qualsiasi sequenza di bit può essere interpretata come un numero, quindi è possibile convertire da binario a qualsiasi altro sistema e viceversa.

Ma risulta che anche l'unario è abbastanza. Puoi codificare 9 come 111111111. Questo non è particolarmente efficiente, ma ha la stessa potenza computazionale.

Le cose diventano ancora più folli quando si guardano modelli alternativi di calcolo, come il calcolo Lambda. Qui puoi visualizzare i numeri come funzioni. In effetti, puoi visualizzare tutto come funzioni. Le cose sono codificate non come bit, 0 e 1, ma come funzioni matematiche chiuse senza stato mutabile. Vedi i numeri della Chiesa per come puoi fare i numeri in questo modo.

Il punto è che 0 e 1 sono un problema completamente specifico dell'hardware e la scelta è arbitraria. Quale codifica stai utilizzando non è particolarmente rilevante per l'informatica, al di fuori di alcuni sottocampi come i sistemi operativi o le reti.


Che dire della codifica di input in macchine a 2 contatori. Sembra importare. Sei sicuro di poter eliminare problemi di codifica così radicale? E difficilmente concordo sul fatto che la complessità non sia un problema; ma il calcolo lambda è un modo corretto di affrontarlo?
babou,

Devo ammettere che ci sono problemi di complessità quando si usa unario. Ma la scelta tra binario vs ternario o qualcosa del genere è in qualche modo arbitraria. Non è come la scelta della codifica non ha importanza, ma non esiste alcuna legge che stabilisca il motivo per cui ne usiamo una in particolare. È dettato principalmente dalla convenienza o dai requisiti hardware, che sono in qualche modo al di fuori della scienza computazionale.
jmite,

1
"Quindi, posso realizzare una macchina di Turing con alfabeto di input". Penso che dovresti scrivere "alfabeto a nastro" qui invece di "alfabeto di input". La parte interessante è ciò che viene utilizzato per il calcolo e non per l'input. Inoltre non sono d'accordo con il fatto che unario sia sufficiente. Una TM con alfabeto nastro unario è quasi inutile, perché il nastro è costante.
Simon S,

Per quanto riguarda l'ultima frase: anche la progettazione e lo studio dell'hardware e dell'architettura dei computer fanno parte dell'informatica.
Kaveh,

2
Potresti voler aggiungere il punto che passare dall'unario al binario riduce la dimensione dei tuoi numeri al loro logaritmo, il che è un serio miglioramento, mentre andare oltre non guadagna molto (solo un fattore lineare).
reinierpost,

23

Alcune altre cose da considerare:

Parte della ragione per usare un sistema di numeri binari è che è il sistema di numeri a base più bassa che può rappresentare numeri nello spazio logaritmico, piuttosto che lineare. Per distinguere in modo univoco tra numeri diversi in unario, la lunghezza media delle rappresentazioni deve essere proporzionale ad almeno , poiché esiste solo una stringa di lunghezza dove ; . Per distinguere in modo univoco tra numeri diversi in binario, la lunghezza media delle rappresentazioni deve essere proporzionale ad almeno , poiché esistono numeri binari di lunghezza ;n k k < n 1 + 1 + . . . + 1 = n n log 2 n 2 k k 1 + 2 + . . . + n + 1nnkk<n1+1+...+1=nnlog2n2kknlog10nlog1020,3nn1+2+...+n+12=n . La scelta di una base più ampia migliora il fabbisogno di spazio di un fattore costante; la base 10 ti dà numeri con una lunghezza di rappresentazione media di , che è volte la lunghezza media di una rappresentazione di base due per tutti . La differenza tra binario e unario è molto maggiore; infatti, è una funzione di . Ottieni molto scegliendo binario piuttosto che unario; si ottiene molto meno scegliendo una base più alta, in confronto.nlog10nlog1020.3nn

C'è qualche verità nell'idea che è più facile implementare la logica digitale se dobbiamo solo distinguere due stati. I segnali elettrici sono analogici e, come tali, possono essere interpretati per rappresentare tutti gli stati discreti che desideri ... ma hai bisogno di hardware più preciso (quindi costoso e schizzinoso) per distinguere in modo affidabile più stati nello stesso intervallo. Questo suggerisce di scegliere una base più bassa che puoi.

Un'altra considerazione potenzialmente importante è che la logica è stata classicamente intesa per coinvolgere due valori distinti: e . Ora abbiamo logiche più elaborate di così, ma molta matematica e scienza si basano ancora su nozioni piuttosto elementari. Quando si considera che i computer vengono utilizzati per il calcolo e che la logica è importante per il calcolo, suggerisce che abbia un buon supporto per almeno due stati distinti ... ma la logica non richiede davvero molto di più.f a l s etruefalse


9

Uno dei motivi principali per cui la maggior parte dei circuiti di computer utilizza due stati è che la quantità di circuiti necessaria per distinguere tra n diversi livelli di tensione è approssimativamente proporzionale a n -1. Di conseguenza, avere tre stati riconoscibili richiederebbe il doppio dei circuiti per segnale e averne quattro richiederebbe il triplo. Triplicare la quantità di circuiti mentre raddoppiare solo la quantità di informazioni rappresenterebbe una perdita di efficienza.

Si noti che ci sono alcuni punti nei computer in cui le informazioni vengono archiviate o comunicate utilizzando più di due stati per elemento. In un array di memoria flash, centinaia o migliaia di celle di memoria possono essere servite da una serie di circuiti di rilevamento del livello. L'uso di quattro livelli per cella anziché due quando si memorizza una determinata quantità di informazioni potrebbe più che triplicare le dimensioni del circuito di rilevamento del livello, ma ridurrebbe della metà il numero di celle di memoria richieste. Quando si comunica su Ethernet 100-base-T o più veloce, il costo dei circuiti necessari per rilevare livelli multipli di segnale sul cavo sarà probabilmente ridotto dal costo di dover utilizzare un cavo con più fili o utilizzare cavi in ​​grado di gestire più transizioni del segnale al secondo senza un livello inaccettabile di distorsione.


9

Esistono computer quantistici nei laboratori di ricerca che usano q-bit come unità di base delle informazioni che possono essere contemporaneamente sia 0 che 1.
http://en.wikipedia.org/wiki/Quantum_computer

Ci sono stati anche computer quantici ternari costruiti secondo questo riferimento http://en.wikipedia.org/wiki/Ternary_computer

Quindi, è davvero possibile costruire dispositivi di calcolo alternativi che non si basano sul sistema di numeri binari. I sistemi a fibre ottiche, ad esempio, usano 0 per l'oscurità e due diverse polarizzazioni ortogonali della luce come 1 e -1.

Il motivo per cui menziono queste cose è perché voglio dimostrare che sebbene i numeri binari siano sufficienti per il calcolo, ci sono sistemi numerici alternativi che possono essere usati per il calcolo.

Il sistema di numeri binari è bello in questo senso possiamo codificare tutti gli interi usando la rappresentazione radix dei numeri. http: // en.wikipedia.org/wiki/Radix Questi valori possono rappresentare il codice ASCII A = 0x41 = 01000001 oppure il valore potrebbe rappresentare un'istruzione macchina nop = 0x90 = 0x10010000. xZ


3
Ma stanno ancora usando un sistema binario, nell'informatica quantistica lo stato di sovrapposizione non è un terzo valore possibile. Anche fornire un esempio di calcolo quantistico non è utile alla domanda posta.
Pianta il

Non sapevo di questo ...
Ali786,

"q-bit come unità base di informazione che può essere contemporaneamente sia 0 che 1." Questo non ha senso. I Qubit sono sostanzialmente diversi dai bit normali, in quanto rappresentano un valore non discreto (complesso). Sono incomparabili per tutti gli scopi pratici.
Lucertola discreta

3

Al cuore dei computer digitali la potenza di elaborazione è un transistor, che funziona come un interruttore. Aumentando la corrente sul "gate" dell'interruttore, consente alla corrente di fluire tra il "collettore" e "emettitore" - l'interruttore è acceso. Il transistor sarà progettato per funzionare in una delle due modalità - completamente acceso o completamente spento ("saturo") - con una chiara divisione di quelli che sono quegli stati. Il transistor può passare rapidamente tra i due stati, rimarrà nello stato con errori molto limitati.

Questo circuito costituisce la base per i dispositivi logici, come AND, NAND, OR, XOR e altre funzioni. La funzione NAND è la più elementare dei mattoni. Questi dispositivi logici sono assemblati per fornire processori che rimangono in uno stato prevedibile e molti transistor possono essere impacchettati in un piccolo spazio per fornire le funzionalità necessarie.

Un transistor può gestire stati multipli o variabili, ma quando funziona in quel modo non produce computer "digitali" convenzionali - tende a rimanere in uno stato prevedibile e sono inclini a interferenze, saturazione, osculazione, ecc. hanno applicazioni limitate in termini di capacità computazionali. Gli amplificatori operazionali potrebbero essere considerati computer analogici.


-3

Utilizziamo solo binario (1,0) perché al momento non disponiamo della tecnologia per creare "switch" in grado di contenere in modo affidabile più di due possibili stati. (I computer quantistici non sono esattamente in vendita al momento.) Il sistema binario è stato scelto solo perché è abbastanza facile distinguere la presenza di una corrente elettrica da un'assenza di corrente elettrica, specialmente quando si lavora con trilioni di tali connessioni. E usare qualsiasi altra base numerica in questo sistema ridicolo, perché il sistema avrebbe bisogno di convertirsi costantemente tra di loro. Questo è tutto quello che c'è da fare.


2
Questo è vero ma non è già tutto incluso nelle risposte esistenti?
David Richerby,
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.