Por que octal e hexadecimal? Computadores usam decimais binários e humanos

16

Por que usamos outras bases que não são binárias (para computadores) nem decimais (para seres humanos)?

Os computadores acabam representando-os em binário, e os humanos preferem fortemente obter sua representação decimal. Por que não seguir essas duas bases?

Quora Feans
fonte
Costumo pensar que não há razão sólida para usar hexadecimal ou qualquer coisa com grande quantidade de glifos para números. Ainda mais, tenho a tendência de pensar que o representante binário pode substituir outras notações para casos gerais no futuro.
Mikhail V
@MikhailV Uma representação hexadecimal é MUITO mais concisa que uma representação binária. Eu diria que é uma razão bastante sólido para usar um número maior de glifos que, digamos, 2.
Ben Jones

Respostas:

19

Números octais (base 8) e hexadecimais (base 16) são um compromisso razoável entre o sistema binário (base 2) que os computadores usam e o sistema decimal (base 10) usado pela maioria dos seres humanos.

Os computadores não são bons em vários símbolos; portanto, a base 2 (onde você tem apenas dois símbolos) é adequada para eles, enquanto cadeias mais longas, números com mais dígitos, são menos problemáticos. Os seres humanos são muito bons com vários símbolos, mas não são tão bons em lembrar de cordas mais longas.

Octal e hex usam a vantagem humana de poderem trabalhar com muitos símbolos enquanto ainda é facilmente convertível entre binários, porque cada dígito hexadecimal representa 4 dígitos binários ( ) e cada dígito octal representa 3 ( 8 = 2 3 ). Eu acho que o hex ganha sobre o octal porque ele pode ser facilmente usado para representar bytes e números de 16/32/64 bits.16=248=23

dtech
fonte
8
Como exemplo, considere valores hexadecimais de RGB. É fácil lembrar que o branco é #FFFFFF. É mais difícil lembrar que o branco é 16777215 em decimal. Deseja remover o componente vermelho do # EF439A? Você recebe # 00439A, ou seja, basta alterar os dois primeiros dígitos para 0. No decimal, você precisa subtrair 15663104. Boa sorte em lembrar disso.
jmite
3
Para ser preciso, as cores na notação decimal usariam triplos e o branco seria (255, 255, 255). Concatenamos os valores hexadecimais apenas porque eles sempre têm 2 dígitos. Poderíamos fazer o mesmo com decimais, utilizando 0 de, em seguida, branco seria 255.255.255 em vez de 16777215.
Spidey
@ Spidey Exatamente. Além disso, meu cérebro pode analisar algo como (127.255.255) muito mais fácil e posso até adivinhar como a cor ficará, pois posso ver a proporção da quantidade de tinta e não preciso calculá-la em hexadecimal na minha cabeça.
Mikhail V
13

Nós os usamos por conveniência e brevidade.

Hex e Oct são realmente excelentes representações compactadas de binário. O Hex, em particular, é adequado para formas condensadas de endereços de memória. Cada dígito de outubro mapeia diretamente para 3 bits binários e cada dígito hexadecimal para 4 bits binários. Isto é o resultado das bases (8 e 16) serem potências de 2 ( e 2 4 ). Por exemplo, eu posso escrever 01101001 binário como hex 69 ou se eu o estender com um zero inicial como 151 de outubro .23240110100169151

Então, digamos que você precise de um endereço de memória de 64 bits. Você pode ver todos os 64 bits binários ou condensá-lo em 16 dígitos hexadecimais. Geralmente, você não precisa comparar alguns endereços para ver se são iguais ou contínuos. Você prefere olhar para 64 bits ou 16 dígitos?

Logan Mayfield
fonte
5
A Octal tem o benefício de não adicionar nenhum símbolo de dígito e pode ter sido mais prática nos dias de caracteres de 6 bits (e palavras comuns que não contêm duas palavras, por exemplo, PDP-8 de 12 bits, PDP-18 de 18 bits). 1 [registradores de endereço para CDC 6x00], registradores de operando PDP-6 de 36 bits e 60 bits para CDC 6x00). A mudança para caracteres / bytes de octeto e a potência de duas palavras torna o hexadecimal mais atraente.
Paul A. Clayton
"Você prefere olhar para 64 bits ou 16 dígitos?" Certamente eu olharia pedaços agrupados. Mas é claro que não na notação "01", que é feia e machuca meus olhos. E eu nem digo quanto azarar machuca meus olhos.
Mikhail V
@MikhailV: O que você quer dizer com notação "01"? Você diz que prefere olhar para os bits, mas não na notação "01" - que notação você usaria. Se você diz que o hex magoa os olhos, não posso deixar de pensar que você pode ter praticado um pouco mais no decimal do que no hex. (Na verdade, eu pensei que era (solo) sexual que se dizia ser ruim para os olhos, mas isso é outra história.)
PJTraill
Prefiro isso à resposta atualmente mais popular da dtech, porque enfatiza a facilidade de uso, mas você pode ter destacado que não apenas as representações mais curtas, mas também a maior variedade de dígitos, facilitam saber onde você está quando lê um número em hexadecimal ou octal.
PJTraill
@ PaulA.Clayton: bons pontos; Outra vantagem do PDP-11 foi que, embora as palavras (unidade natural de operações) fossem 16 bits, a maioria dos códigos de instruções caiu naturalmente em uma operação de 2 bits e em quatro grupos de 3 bits representando o número do registro e o modo de endereço, ambos com 8 possibilidades, de dois argumentos. O meu favorito: 014747 = MOV - (PC), - (PC), que preenche a memória consigo mesmo (se permitido).
PJTraill
5

Os números binários no texto são um desperdício de espaço.

252n-1

Karolis Juodelė
fonte
2

Introdução

Como já mencionado por outras respostas, pode haver notações diferentes para diferentes propósitos e restrições. O Notations é na verdade uma codificação como uma sequência de caracteres, e sabemos pelo estudo de algoritmos e estrutura de dados que existem muitas maneiras de codificar conceitos abstratos, uma lista ou um conjunto, por exemplo, dependendo do que queremos fazer com ele. . Nesse caso, é principalmente uma conveniência algorítmica.

Ao considerar a representação de números, o mesmo se aplica. Dentro do computador, tudo é binário no nível mais baixo, embora representações mais estranhas possam ser usadas para alguns aplicativos.

Fora do computador, usamos qualquer tipo de representação humana compreensível, dependendo da conveniência humana em relação ao tipo de valor representado. Muitas vezes, a representação binária é muito longa e não estruturada para ser lida e escrita com facilidade, tornando-se hexadecimal ou octal. Muitas vezes, a escolha tem a ver com a maneira como as informações são estruturadas em uma palavra binária, que não necessariamente representa um número.

Porém, ao considerar apenas números , ou seja, representação de números, vale a pena examinar outros sistemas de representação numérica para entender que os principais fatores são: fisiologia, hábito e conveniência. A conveniência é, obviamente, o principal fator que cria a diversidade, pois depende do contexto de uso.

Um olhar mais amplo

2n

O corpo da questão não parece de forma alguma restrito aos computadores, e os seres humanos já usaram e ainda estão usando vários outros sistemas de numeração. Alguns deles são até usados ​​em computadores, por exemplo, quando se lida com números inteiros longos (para não mencionar números não inteiros ).

Uma primeira observação é que, quando as pessoas contam em milhares ou milhões como uma unidade, isso ainda é considerado decimal, porque são potências de 10. Portanto, pode-se perguntar por que octal ou hexadecimal não deve ser considerado apenas uma variação no binário. Uma razão possível pode ser o número de símbolos usados ​​para representar números (embora esse seja um assunto discutível, como veremos em outros sistemas).

Então, em relação aos seres humanos, eles usam vários sistemas na base 5, chamados sistemas quinários . Na verdade, a maioria desses sistemas possui duas bases, sendo a segunda 2 ou 4, alternando com a base cinco, o que as torna equivalentes à base 10 (decimal) ou à base 20 (vigesimal). Adivinhe de onde isso vem :)

Esses sistemas de base dupla são chamados de sistemas bi ou quádruplos. O quinary puro é raramente usado.

O numeral romano pode ser visto como um sistema bi-quinário (que é uma indicação de como fazer aritmética com eles). Ábaco chinês e japonês usam bi-quinary. O quadri-quinário foi usado pelos maias.

A razão para usar um sistema provavelmente é muitas. Uma boa razão é que foi o primeiro projeto local e as pessoas agora estão acostumadas. Por exemplo, pode-se perguntar também por que as pessoas que falam inglês ainda estão usando um sistema de numeração extremamente estranho ao tentar medir distâncias. Você poderia argumentar que se trata de várias unidades, sem numeração, mas essa é uma observação muito fraca. Os números são usados ​​principalmente para medir as coisas.

Outras razões para manter um sistema é a conveniência em um determinado contexto. Pode haver uma troca entre o número de símbolos diferentes, ou posições em um ábaco, e o número de ocorrências de símbolos necessárias para formar números suficientemente grandes. A Base 2 funciona com 2 símbolos distintos, mas possui muitas ocorrências, o que pode ser inconveniente para uma representação do material. A base vigesimal 20 exigiria vinte símbolos e tabelas de multiplicação muito grandes das quais as pessoas não se lembrariam. Mas um sistema bi-quinário ou quadri-quinário é muito mais gerenciável, especialmente para criar ábaco. O sistema quinário puro provavelmente seria ainda melhor, mas vai contra os hábitos e a intuição baseados na fisiologia. E é sempre bom poder usar os dedos para contar, quando não sabemos melhor.

Mas isso não é tudo.

Um sistema muito antigo e muito comum é o sistema sexagesimal usado para medir o tempo e os ângulos (mas sabemos que eles estão relacionados, através da rotação da Terra). Ele usa a base 60, mas não usa 60 símbolos, pois são muitos. Portanto, ele conta com outro sistema para representar seus synbols (como o sistema decimal).

O círculo pode ser dividido em 6 partes correspondentes a ângulos de 60 graus, que são as mais simples de construir com triângulos equilaterais. Então, cada grau é de 60 minutos de arco, cada um dividido em 60 segundos.

De acordo com a wikipedia

Originou-se com os antigos sumérios no terceiro milênio aC, foi transmitido aos antigos babilônios e ainda é usado - de forma modificada - para medir tempo, ângulos e coordenadas geográficas.

Considerando a origem, era um sistema bastante conveniente, numa época em que a matemática mal entrava na infância. Não é fácil desenhar apenas o ângulo de 60⁰, mas 60 tem muitos fatores, de modo que permitiu dividir de várias maneiras com números inteiros, sem um resto.

12×5=60

Mas existem outras maneiras de chegar aos 60, como o sistema vigésimo-ternário dos babilônios .

Por que ainda usamos o sistema sexagesimal? Acho que estamos acostumados a isso e podemos ter muitos problemas conflitantes para que uma mudança seja totalmente justificada.

É interessante notar que há muita interação entre sistemas de numeração e sistemas de unidades. Mas isso é esperado, uma vez que a medida é um papel importante para os números. Isso é perceptível na oposição entre as métricas decimal e binária para o tamanho da memória .

babou
fonte
3
Isso pode ser porque o título diz "Por que hex, octal ou hexadecimal?"
Fizz
1
@RespawnedFluff Boa observação. Então meu questionamento pode se estender à pergunta. Não quis dizer que outras respostas são desinteressantes. Mas uma visão mais ampla mostra melhor as possíveis motivações para uma variedade de sistemas. Ele suporta algumas das respostas já dadas. Basicamente, as motivações são hábito e conveniência. Mas a conveniência depende muito do contexto. A dicotomia do tamanho da memória é criada recentemente e ilustra o ponto.
babou
2
A brevidade é uma virtude, esta questão não requer uma prosa de 1000 palavras, nem é muito relevante. Você também não respondeu à pergunta.
DTECH
"quando as pessoas contam em milhares, ..., isso ainda é considerado decimal, porque são potências de 10. Portanto, pode-se perguntar por que octal ou hexadecimal não deve ser considerado apenas uma variação no binário." Porque milhares são apenas a omissão de dígitos, geralmente zeros. Isso é diferente da base-1000, que usaria 1000 símbolos diferentes para cada número de 0 a 9999.
DTECH
1
@dtech Obrigado. Eu tinha esquecido a introdução ou resumo que geralmente tenho diante das minhas respostas. E isso me levou a um ponto importante aparentemente ignorado por outras respostas. Nem toda palavra binária se destina a um numeral. Tentar obter uma visão mais ampla é o que ajuda a encontrar problemas.
26415
-1

Os computadores entendem os números binários e, em binário, os pesos do número estão na potência de 2; portanto, o número de dígitos para representar um número pode ser grande, dependendo do número.

Digamos, 64 em decimal pode ser representado por 7 bits, enquanto que para representar o número 5000, precisamos de 13 bits.

O sistema de números octais e hexadecimais é uma maneira compacta de representar um número binário.

Mayank Kumar Gupta
fonte
2
Como isso responde [What advantage is there to using a base different from ten or (a power of) two?]- ou de que outra forma você interpreta Why not stick to [bases 2 and 10]??
greybeard 12/01