Por que os computadores usam o sistema de números binários (0,1)?

31

Por que os computadores usam o sistema de números binários (0,1)? Por que eles não usam o sistema numérico ternário (0,1,2) ou qualquer outro sistema numérico?

Rai Ammad Khan
fonte
9
Esta é uma pergunta sobre engenharia elétrica. Aparentemente, portões binários são mais fáceis de implementar. IIRC algum computador ternário foi construído em algum momento.
Yuval Filmus
7
Que pesquisa você fez? Quando digito o título da sua pergunta no Google, recebo de volta os resultados da pesquisa que fornecem várias respostas para sua pergunta. Além disso, o artigo da Wikipedia sobre números binários e código binário tem uma breve explicação. Esperamos que você faça uma quantidade significativa de pesquisa antes de perguntar aqui, e me parece que você não fez nenhuma pesquisa básica antes de perguntar. Pesquisando no Google e na Wikipedia é um mínimo.
DW
Bases maiores não se mostraram úteis em geral.
Raphael
@Raphael: Ternary fez
Mooing Duck
2
Vou colocar isso como um comentário, porque já existe uma resposta aceita. É extraordinariamente difícil construir dispositivos eletrônicos que discriminem de forma confiável entre dez valores por causa das tolerâncias de fabricação. É relativamente fácil construir dispositivos eletrônicos que discriminam entre dois valores. Portanto, a resposta curta é que os computadores usam representação binária para confiabilidade . Eu escrevi uma resposta mais detalhada para aqueles que podem se importa: bbrown.kennesaw.edu/papers/why_binary.html
Bob Brown

Respostas:

31

Como estamos na Ciência da Computação, responderei desta maneira: eles não.

O que queremos dizer com "computador"? Existem muitas definições, mas na ciência da computação, a mais comum é a máquina de Turing.

Uma máquina de turing é definida por vários aspectos: um conjunto de estados, uma tabela de transição, um conjunto de interrupções e, importante para nossa discussão, um alfabeto. Este alfabeto refere-se aos símbolos que a máquina pode ler como entrada e que pode gravar em sua fita. (Você pode ter diferentes alfabetos de entrada e fita, mas não vamos nos preocupar com isso por enquanto.)

Portanto, eu posso criar uma máquina de Turing com o alfabeto de entrada ou ou ou . Não importa. O fato é que posso usar qualquer alfabeto que escolher para codificar dados.{0,1}{ 0 , 1 , 2 } { , }{a,b}{0,1,2}{,}

Então, posso dizer que é 9 ou posso dizer que é 9. Não importa, pois são apenas símbolos que podemos distinguir.0001001↑↑↑↓↑↑↓

O truque é que o binário é suficiente. Qualquer sequência de bits pode ser interpretada como um número, para que você possa converter de binário para qualquer outro sistema e vice-versa.

Mas, acontece que unário também é suficiente. Você pode codificar 9 como 111111111. Isso não é particularmente eficiente, mas tem o mesmo poder computacional.

As coisas ficam ainda mais loucas quando você olha para modelos alternativos de computação, como o cálculo Lambda. Aqui, você pode ver os números como funções. De fato, você pode ver tudo como funções. As coisas são codificadas não como bits, 0s e 1s, mas como funções matemáticas fechadas, sem estado mutável. Veja os números da Igreja para saber como fazer números dessa maneira.

O ponto é que, 0s e 1s é uma questão completamente específica do hardware, e a escolha é arbitrária. A codificação usada não é particularmente relevante para a ciência da computação, fora de alguns subcampos, como sistemas operacionais ou redes.

jmite
fonte
E a codificação de entrada em máquinas com 2 contadores. Parece importar. Tem certeza de que pode descartar problemas de codificação tão radicalmente? E eu dificilmente concordaria que complexidade não é um problema; mas o cálculo lambda é uma maneira adequada de resolvê-lo?
babou
Admito que há problemas de complexidade quando você usa o unário. Mas a escolha de binário versus ternário ou algo assim é um tanto arbitrária. Não é como se a escolha da codificação não importasse, mas não há nenhuma lei que determine por que usamos uma determinada. É ditado principalmente por conveniência ou por requisitos de hardware, que estão um pouco fora da ciência computacional.
jmite
1
"Então, eu posso fazer uma máquina de Turing com alfabeto de entrada". Eu acho que você deve escrever "alfabeto de fita" aqui em vez de "alfabeto de entrada". A parte interessante é o que é usado para computação e não para entrada. Além disso, eu discordo de ser unário o suficiente. Uma TM com alfabeto de fita unário é quase inútil, porque a fita é constante.
Simon S
Em relação à última frase: o design e o estudo de hardware e arquitetura de computadores também fazem parte da ciência da computação.
precisa saber é
2
Você pode adicionar o ponto de que passar de unário para binário reduz o tamanho de seus números ao logaritmo deles, o que é uma melhoria séria, enquanto ir além não ganha tanto (apenas um fator linear).
Reinierpost
23

Algumas outras coisas a considerar:

nnkk<n1+1+...+1=nnlog2n2kk1+2+...+n+12=nnlog10nlog1020.3nn

Há alguma verdade na ideia de que é mais fácil implementar a lógica digital se tivermos que distinguir apenas dois estados. Sinais elétricos são analógicos e, como tal, podem ser interpretados para representar tantos estados discretos quanto você gostaria ... mas você precisa de um hardware mais preciso (portanto caro e exigente) para distinguir de forma confiável mais estados na mesma faixa. Isso sugere a escolha da base mais baixa possível.

truefalse

Patrick87
fonte
9

Uma das grandes razões pelas quais a maioria dos circuitos de computador usa dois estados é que a quantidade de circuitos necessária para distinguir entre n níveis de tensão diferentes é aproximadamente proporcional a n -1. Consequentemente, ter três estados discerníveis exigiria o dobro de circuitos por sinal e ter quatro exigiria três vezes mais. Triplicar a quantidade de circuitos e apenas dobrar a quantidade de informações representaria uma perda de eficiência.

Observe que existem alguns lugares nos computadores em que as informações são armazenadas ou comunicadas usando mais de dois estados por elemento. Em uma matriz de memória flash, centenas ou milhares de células de memória podem ser atendidas por um conjunto de circuitos com detecção de nível. O uso de quatro níveis por célula em vez de dois ao armazenar uma certa quantidade de informação pode mais que triplicar o tamanho dos circuitos com detecção de nível, mas reduziria pela metade o número de células de memória necessárias. Ao se comunicar através de uma Ethernet 100-base-T ou mais rápida, o custo do circuito necessário para detectar vários níveis de sinal no cabo provavelmente será reduzido pelo custo de ter que usar um cabo com mais fios ou usar cabos que possam lidar com mais transições de sinal por segundo sem um nível inaceitável de distorção.

supercat
fonte
9

Existem computadores quânticos em laboratórios de pesquisa que usam q-bit como a unidade básica de informação que pode ser 0 e 1 simultaneamente.
http://en.wikipedia.org/wiki/Quantum_computer

Também houve computadores quânticos ternários construídos de acordo com esta referência http://en.wikipedia.org/wiki/Ternary_computer

Portanto, é realmente possível construir dispositivos de computação alternativos que não dependem do sistema de números binários. Os sistemas de fibra óptica, por exemplo, usam 0 para escuro e duas polarizações ortogonais diferentes da luz como 1 e -1.

A razão pela qual menciono essas coisas é porque quero mostrar que, embora os números binários sejam suficientes para a computação, existem sistemas de números alternativos que podem ser usados ​​para a computação.

xZ

Gary D.
fonte
3
Mas eles ainda estão usando um sistema binário, na computação quântica o estado de superposição não é um terceiro valor possível. Também jogar fora um exemplo de computação quântica não é útil para a pergunta.
lPlant
Eu não sabia sobre isso ..
Ali786
"q-bit como a unidade básica de informação que pode ser 0 e 1 simultaneamente." Isso não faz sentido. Os Qubits são fundamentalmente diferentes dos bits normais, pois representam um valor não-discreto (complexo). Eles são incomparáveis ​​para todos os fins práticos.
Lagarto discreto
3

No coração dos computadores digitais, o poder de processamento é um transistor, que funciona como um comutador. Ao aumentar a corrente no "portão" do interruptor, ele permite que a corrente flua entre o "coletor" e o "emissor" - o interruptor está ligado. O transistor será projetado para operar em um dos dois modos - totalmente ligado ou totalmente desligado ('saturado') - com uma divisão clara do que são esses estados. O transistor pode alternar entre os dois estados rapidamente, permanecerá no estado com erros muito limitados.

Esse circuito forma a base de dispositivos lógicos, como AND, NAND, OR, XOR e outras funções. A função NAND é a mais básica dos blocos de construção. Esses dispositivos lógicos são montados para fornecer processadores que permanecem em um estado previsível, e muitos transistores podem ser empacotados em um espaço pequeno para fornecer a funcionalidade necessária.

Um transistor pode gerenciar múltiplos estados ou estados variáveis, mas ao operar dessa maneira, eles não produzem computadores "digitais" convencionais - eles não tendem a permanecer em um estado previsível e são propensos a interferências, saturação, osculação, etc. eles têm aplicações limitadas em termos de habilidades computacionais. Os amplificadores operacionais podem ser considerados computadores analógicos.

peeldog
fonte
-3

Nós usamos apenas binário (1,0) porque atualmente não temos a tecnologia para criar "comutadores" que podem conter com segurança mais de dois estados possíveis. (Os computadores quânticos não estão exatamente à venda no momento.) O sistema binário foi escolhido apenas porque é muito fácil distinguir a presença de uma corrente elétrica de uma ausência de corrente elétrica, especialmente quando se trabalha com trilhões dessas conexões. E usar qualquer outra base numérica nesse sistema é ridículo, porque o sistema precisaria se converter constantemente entre eles. É tudo o que há para isso.

Irfan Khan
fonte
2
Isso é verdade, mas tudo isso já não está incluído nas respostas existentes?
David Richerby