Pergunta

Eu nunca usei números octais em meu código nem encontrei nenhum código que os usasse (apesar de hexadecimal e manipulação de bits).

Comecei a programar em C/C++ por volta de 1994, então talvez eu seja muito jovem para isso?O código mais antigo usa octal?C inclui suporte para estes acrescentando um 0, mas onde está o código que usa esses números literais de base 8?

Foi útil?

Solução

Recentemente tive que escrever um código de protocolo de rede que acessasse campos de 3 bits.Octal é útil quando você deseja depurar isso.

Apenas para efeito, você pode me dizer quais são os campos de 3 bits disso?

0x492492

Por outro lado, este mesmo número em octal:

022222222

Agora, finalmente, em binário (em grupos de 3):

010 010 010 010 010 010 010 010

Outras dicas

O único lugar onde encontro literais octais atualmente é ao lidar com bits de permissão em arquivos no Linux, que normalmente são representados como 3 dígitos octais, onde cada dígito representa as permissões para o proprietário do arquivo, grupo e outros usuários, respectivamente.

por exemplo.0755 (também apenas 755 com a maioria das ferramentas de linha de comando) significa que o proprietário do arquivo tem permissões totais (leitura, gravação, execução) e o grupo e outros usuários têm apenas permissões de leitura e execução.

Representar esses bits em octal torna mais fácil descobrir quais permissões estão definidas.Você pode dizer rapidamente o que 0755 significa, mas não 493 ou 0x1ed.

De Wikipédia

No momento em que o Octal originalmente se tornou amplamente utilizado na computação, sistemas como os mainframes da IBM empregavam palavras de 24 bits (ou 36 bits).Octal era uma abreviação ideal de binário para essas máquinas, porque oito (ou doze) dígitos podiam exibir concisa uma palavra inteira da máquina (cada dígito octal cobrindo três dígitos binários).Ele também reduziu os custos, permitindo que os tubos Nixie, displays de sete segmentos e calculadoras sejam usados ​​para os consoles do operador;Onde os displays binários eram complexos demais para serem usados, as telas decimais precisavam de hardware complexo para converter radixes e telas hexadecimais necessárias para exibir letras.

Todas as plataformas de computação modernas, no entanto, usam palavras de 16, 32 ou 64 bits, com oito bits comprando um byte.Em tais sistemas, seriam necessários três dígitos octais, com o dígito octal mais significativo representando inelegantemente apenas dois dígitos binários (e em uma série o mesmo dígito octal representaria um dígito binário do próximo byte).Portanto, o hexadecimal é mais comumente usado em linguagens de programação hoje, já que um dígito hexadecimal cobre quatro dígitos binários e todas as plataformas de computação modernas têm palavras de máquina que são uniformemente divisíveis por quatro.Algumas plataformas com um tamanho de palavra de duas palavras ainda possuem subpainhas de instruções que são mais facilmente compreendidas se exibidas em octal;Isso inclui o PDP-11.A arquitetura x86 onipresente moderna também pertence a essa categoria, mas o octal quase nunca é usado nessa plataforma.

-Adão

Eu nunca usei números octais no meu código, nem encontrei nenhum código que o usasse.

Aposto que sim.De acordo com o padrão, literais numéricos que começam com zero são octais.Isso inclui, trivialmente, 0.Cada vez que você usou ou viu um zero literal, isso foi octal.Estranho mas verdade.:-)

A Aviação Comercial usa "rótulos" octais (basicamente ids de tipo de mensagem) no venerável padrão de barramento Arinc 429.Portanto, ser capaz de especificar valores de rótulo em octal ao escrever código para aplicações aviônicas é bom...

Também vi octal usado em transponders de aeronaves.Um código transponder modo 3a é um número de 12 bits que todos tratam como 4 números octais.Há um pouco mais de informação sobre Wikipédia.Eu sei que geralmente não é relacionado a computadores, mas a FAA também usa computadores :).

É útil para o chmod e mkdir funciona no mundo Unix, mas fora isso não consigo pensar em nenhum outro uso comum.

Entrei em contato com Octal através PDP-11, e o mesmo aconteceu, aparentemente, com a linguagem C :)

arquivos tar armazenam informações como uma string de valor inteiro octal

Não há nenhuma razão terrena para modificar um padrão que remonta ao nascimento da linguagem e que existe em um número incontável de programas.Eu ainda me lembro de caracteres ASCII por seus valores octal, teria que pensar em criar o valor hexadecimal de A, mas é 101 em octal;numérico 0 é 060...^C é 003...

Ou seja, costumo usar a representação octal.

Agora, se você realmente quer dobrar sua mina, dê uma olhada no formato word do PDP-10...

Ainda existem vários sistemas de controle de processos antigos (Honeywell H4400, H45000, etc.) do final dos anos 60 e 70, organizados para usar palavras de 24 bits com endereçamento octal.Pense em quando as últimas usinas nucleares foram construídas nos Estados Unidos como exemplo.

Substituir esses sistemas industriais é uma tarefa muito importante, então você pode ter a sorte de encontrar um na natureza antes que eles sejam extintos e ficar boquiaberto com seus magníficos formatos de ponto flutuante personalizados!

Qualquer pessoa que aprendeu a programar em um PDP-8 tem um carinho especial por números octais.O tamanho da palavra era de 12 bits divididos em 4 grupos de 3 bits cada, então -1 era 7777 octal.Este esquema foi perpetuado no PDP-11, que tinha palavras de 16 bits, mas ainda usava representação octal para várias coisas, daí o esquema de permissão de arquivo *NIX que existe até hoje.

Octal é e foi mais útil com o primeiro hardware de exibição disponível (telas de 7 segmentos).Esses monitores originais não tinham os decodificadores disponíveis posteriormente.

Assim, as saídas dos registros digitais foram agrupadas para caber no display disponível, que era capaz de exibir apenas oito (8) símbolos:0,1,2 3,4,5,6,7 .

Além disso, os primeiros tubos de exibição CRT eram monitores de varredura raster e os geradores de símbolos de caracteres mais simples eram equivalentes aos monitores de 7 segmentos.

O motivador foi, como sempre, o monitor menos dispendioso possível.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top