Eu apenas bati minha cabeça contra a mesa por cerca de 20 minutos, olhando para um bug totalmente estranho no PHP, e então percebi que há octal. O <% (* & #> octal.
Em suma, preenchi alguns literais com zeros para que o código fosse alinhado, eu sei, grande erro. Esqueceu sobre octais.
A questão é: alguém usa octais para algo além de permissões de arquivo? (Pessoalmente, prefiro, chmod ugo+rwx
mas entendo que, se tiverem que ser gerados programaticamente, é útil usar octais.) Mas eles são úteis em qualquer outra situação?
0o
prefixo (que é consistente com,0x
e0b
talvez um pouco difícil de distinguir00
). E desde o Python 3, zeros à esquerda extras são um erro de sintaxe para evitar esse tipo de erro.Respostas:
Segundo a Wikipedia , octais não são tão comuns quanto costumavam ser. Como outros já mencionaram, no passado, os sistemas costumavam ter uma palavra de 12/24 / 36 bits, que é mais facilmente representada em octal do que em hexadecimal, mas atualmente, as arquiteturas x86 e i64 usam 16/32/64 bits. palavra, que é mais facilmente representada em hexadecimal e francamente feia em octal.
Os usos atuais, no entanto, incluem:
\3nn
e qualquer byte de continuação\2nn
)0
em alguma linguagem de programação que suporta octais, como esse usuário escreveu .Observe que as linguagens de programação modernas às vezes não suportam mais octais devido à falta de casos de uso e ao potencial de erros. C # é um exemplo, como Eric Lippert escreveu isso na terceira e quarta edição do TCPL :
Relacionado e apenas para referência e curiosidade, o Code, A Linguagem Oculta do Hardware de Computador tem uma excelente explicação fácil de seguir sobre sistemas de números octais e outros na página 55 - 63 .
fonte
parseInt(011)==9
O Octal foi amplamente utilizado há 50 anos pela Digital Equipment Corp. (DEC) e outras empresas que possuíam computadores com uma palavra de 12 bits (por exemplo, o PDP-8) ou outros múltiplos de seis, como 18 e 36 (por exemplo, UNIVAC 1108 ) Eu usei o PDP-8 e o UNIVAC 1108 na pós-graduação. Os caracteres nas duas máquinas geralmente usavam seis bits, não 8.
Formato de instrução PDP-8 - observe que os bits estão numerados de 0 a 11. O bit 0 foi o MSB (bit mais significativo).
Quando o DEC saiu com o PDP-11 de 16 bits, eles continuaram a usar octal em sua documentação, em vez de hexadecimal, conforme usado pelos outros fabricantes de minicomputadores que lançavam máquinas de 16 bits na época. Provavelmente, isso ocorreu devido aos vários campos de 3 bits nos formatos de instrução PDP-11, como Register, Mode e Src / Dest, que se deviam decodificar como um dígito octal. (Obrigado a John Strohm por apontar isso.)
Curiosamente, quando a Motorola lançou seu microprocessador 68000, que foi fortemente influenciado pelo PDP-11 e tinha os mesmos campos Modo e Registro de 3 bits nas instruções, eles escolheram usar apenas hexadecimal na documentação.
Como o PDP-11 usava a notação octal, os códigos de permissão originais do Unix, que apareceram pela primeira vez no PDP-11, também usavam o octal. Esse legado persiste no Linux, onde o comando chmod ainda usa octal para especificar cada um dos campos 'rwx' de três bits.
Um pouco mais de trivialidades - o CompuServe, um serviço on-line dial-up amplamente utilizado nos anos 80 e início dos 90 (antes de ser ofuscado pela AOL), rodava nos minicomputadores DEC, pelo menos originalmente. Todos os IDs de usuário eram numéricos e, em algum momento, observei que eles nunca incluíam 8 ou 9, portanto estavam em octal. Meu antigo ID do CIS era 70205.
fonte
O Heathkit os usou no painel frontal do H-8 e para listagens em linguagem assembly do software do painel frontal (chamado PAM-8). Namorando comigo, eu sei.
Hoje em dia os octais são muito raros; todo mundo parece usar hexadecimal. Mas os números ainda parecem números em octal e você não precisa de uma linha adicional de teclas para os dígitos A a F.
fonte
Uma das razões pelas quais a octal vê uso é porque é a maior base que é uma potência de 2 para a qual você não precisa de caracteres especiais - ou seja, todos os dígitos podem ser numéricos. A base 16 (a próxima acima da base 8) requer dígitos não numéricos (geralmente A, B, C, D, E, F).
fonte
Eu uso octal todos os dias. Toda vez que preciso chmod um arquivo, uso octal (eu antecipo a notação u + r ...). Toda vez que quero incorporar um caractere de controle dentro de uma string, uso octal ... (Sim, eu poderia usar hex, mas octal é o que uso).
fonte
Qualquer pessoa que precise expressar combinações de bits agrupados em três.
Por que alguém usa hexadecimal?
Coisas em cima da minha cabeça que são expressas como números octais:
ncurses
bibliotecafonte
7 * 6
ou07 * 06
? Usamos decimal para representar números, pois podemos lidar com eles da melhor maneira e hexadecimal para representar números muito próximos de como a máquina os armazena. E fazemos muito isso. Este site está cheio de evidências.Quando eu trabalhei nos mainframes do CDC (com uma palavra de 60 bits e 12 bits para a PPU), todos os core dumps foram feitos em octal (20 dígitos octais por palavra, 4 por palavra PPU).
fonte
Como hexadecimal, a notação octal às vezes é usada para especificar códigos de caracteres. Pode ser útil pela mesma razão que o hexadecimal: é mais compacto que o binário, mas muito fácil de traduzir para o binário na sua cabeça.
fonte
Como o Hex, os números octais são fáceis de converter de binários. Apenas agrupe os dígitos binários em grupos de três, começando à direita.
fonte
Não. Nunca os usei. Nem mesmo para definir permissões de arquivo, porque faço isso tão raramente que acho difícil de ler.
Então, sim, há o benefício óbvio da conversão de e para binário.
No entanto, como já apontado pelo @Mason, o hex é muito mais "natural", porque 2 dígitos hexadecimais formam um byte. É útil para representar cores, endereços IP, máscaras de bytes, RGB / ARGB 24/32 bits, etc. O octal do outro lado não é realmente prático, porque você raramente tem cenários em que trabalha em termos de grupos de 3 bits.
Permissões de arquivo são, de fato, a única coisa em que consigo pensar. E se não houver área de uso a partir de agora, duvido que alguma vez exista uma. Desde os últimos 20 anos, o espaço tornou-se tão barato, tornou-se muito incomum empacotar informações com tanta rigidez, às custas do alinhamento, facilidade de uso e extensibilidade.
fonte
Um pouco de lado, mas o uso público está no metrô de Londres. Cada trem tem uma identidade física e uma identidade separada nos horários exibidos durante o serviço - veja aqui: https://upload.wikimedia.org/wikipedia/commons/4/49/LUL-S-Stock-at -Watford.jpg (observe o 402 na parte superior da tela de destino). Embora os componentes eletrônicos dos monitores sejam baseados em decimais padrão, você nunca vê os dígitos 8 ou 9 porque estão vinculados ao hardware octal herdado no sistema de sinalização.
fonte