Java fornece maneiras de escrever literais numéricos nas bases 2, 8, 10 e 16.
Gostaria de saber por que a base 8 está incluída, por exemplo int x = 0123;
?
Eu estou pensando que pode haver algo semelhante ao fato de que em hexadecimal a capacidade de um byte é FF + 1 , e assim por diante.
Respostas:
Esta resposta foi escrita para a pergunta original: "Por que escrever um número na base 8 é útil?"
Era para tornar a linguagem familiar àqueles que conheciam C etc. Então a questão é por que apoiá-la naqueles!
Havia arquiteturas (vários PDPs) que usavam palavras com 18 bits de largura (e outras usavam palavras de 36 bits); portanto, literais em que o dígito tem 3 bits de largura seriam úteis.
Na prática, o único lugar em que eu o vi usado no código Java é para especificar permissões no estilo unix, por exemplo
0777
,0644
etc.(A resposta explícita do motivo pelo qual é suportada é "obter votos positivos sobre esta questão ").
fonte
"Os números octais não são tão comuns como costumavam ser. No entanto, o Octal é usado quando o número de bits em uma palavra é múltiplo de 3. Ele também é usado como atalho para representar permissões de arquivo em sistemas UNIX e representar Números UTF8 etc. "
De: https://www.tutorialspoint.com/octal-number-system
fonte
História do computador (ciência). Para representar um grupo de bits, uma base 10 não se encaixa, base 8 = 2 3 por 3 bits e base 16 = 2 4 para 4 bits se encaixa melhor.
A vantagem da base 8 é que todos os dígitos são realmente dígitos: 0-7, enquanto a base 16 tem "dígitos" 0-9A-F.
Para 8 bits de uma base de bytes 16 (hexadecimal), cabe melhor e ganha. Para Unix base 8 octal, muitas vezes ainda é usado para
rwx
bits (leitura, gravação, execução) para usuário, grupo e outros; portanto, números octais como 0666 ou 0777.Hexadecimal é onipresente, principalmente porque o tamanho das palavras dos computadores atualmente é de vários bytes. O fato de o 8 bits
byte
se tornar um padrão é outra história difícil e relacionada (2 3 bits e endereçamento).fonte
Uso comum do Octal
Como abreviação de binário: Para máquinas de computação (como UNIVAC 1050, PDP-8, ICL 1900 etc.), o Octal foi usado como uma abreviação de binário porque o tamanho da palavra é divisível por três (cada dígito octal representa três dígitos binários). dígitos). Assim, dois, quatro, oito ou doze dígitos poderiam exibir concisa uma palavra de máquina inteira. Também reduziu os custos ao permitir que os tubos Nixie, telas de sete segmentos e calculadoras fossem usadas para os consoles do operador, onde as telas binárias eram complexas demais para serem usadas, as telas decimais precisavam de hardware complexo para converter as radições e as telas hexadecimais necessárias para exibir mais números .
Representação de palavras de 16, 32 ou 62 bits:Todas as plataformas de computação modernas usam palavras de 16, 32 ou 64 bits, divididas em bytes de oito bits. Em tais sistemas, seriam necessários três dígitos octais por byte, com o dígito octal mais significativo representando dois dígitos binários (mais um bit do próximo byte significativo, se houver). A representação octal de uma palavra de 16 bits requer 6 dígitos, mas o dígito octal mais significativo representa (de maneira bastante deselegante) apenas um bit (0 ou 1). Essa representação não oferece nenhuma maneira de ler facilmente o byte mais significativo, porque está manchado em quatro dígitos octais. Portanto, hoje em dia, o hexadecimal é mais comumente usado em linguagens de programação, pois dois dígitos hexadecimais especificam exatamente um byte. Algumas plataformas com tamanho de duas palavras ainda possuem subpalavras de instruções que são mais facilmente compreendidas se exibidas em octal; isso inclui a família PDP-11 e Motorola 68000. A arquitetura onipresente x86 moderna também pertence a essa categoria, mas o octal raramente é usado nessa plataforma.
Descrições de codificação: Certas propriedades da codificação binária de opcodes na arquitetura moderna x86 se tornam mais aparentes quando exibidas em octal, por exemplo, o byte ModRM, dividido em campos de 2, 3 e 3 bits, para que octal possa ser útil na descrição. essas codificações.
Permissões de acesso a arquivos e cálculos: Octal às vezes é usado na computação em vez de hexadecimal, talvez com mais frequência nos tempos modernos em conjunto com permissões de arquivo em sistemas Unix (acesso de permissão ao chmod). Tem a vantagem de não exigir símbolos extras como dígitos (o sistema hexadecimal é base 16 e, portanto, precisa de seis símbolos adicionais além de 0 a 9).
Telas digitais: os números octais também são usados na exibição de conteúdo digital em uma tela, pois possui menos número de símbolos usados para representação.
Representação gráfica de cadeias de bytes: Algumas linguagens de programação (C, Perl, Postscript etc.) têm uma representação de textos / gráficos no Octal com escape como \ nnn. A representação octal é particularmente útil com bytes não ASCII de UTF-8, que codificam grupos de 6 bits e onde qualquer byte inicial possui valor octal \ 3nn e qualquer byte de continuação possui valor octal \ 2nn.
Aritmética inicial de ponto flutuante: O Octal também era usado para ponto flutuante nos computadores do Atlas Ferranti (1962), Burroughs B5500 (1964), Burroughs B5700 (1971), Burroughs B6700 (1971) e Burroughs B7700 (1972).
Em transponders: as aeronaves transmitem um código, expresso como um número de quatro dígitos octais quando interrogado por radar no solo. Este código é usado para distinguir diferentes aeronaves na tela do radar.
Leituras adicionais: https://en.wikipedia.org/wiki/Octal
fonte