Octal - Octal

Sistemas numéricos , bits e código Gray
hex dezembro outubro 3 2 1 0 Passo
0 hex 00 dez 00 out 0 0 0 0 g0
1 hex 01 dezembro 01 out 0 0 0 1 h1
2 hex 02 dez 02 out 0 0 1 0 j3
3 hex 03 dez 03 out 0 0 1 1 eu2
4 hex 04 de dezembro 04 out 0 1 0 0 n7
5 hex 05 dez 05 out 0 1 0 1 m6
6 hex 06 de dezembro 06 out 0 1 1 0 k4
7 hex 07 de dezembro 07 out 0 1 1 1 eu5
8 hex 08 dez 10 out 1 0 0 0 vF
9 hex 09 de dezembro 11 out 1 0 0 1 vocêE
Um feitiço 10 dez 12 out 1 0 1 0 sC
B hex 11 de dezembro 13 out 1 0 1 1 tD
C hex 12 dez 14 out 1 1 0 0 o8
D hex 13 dez 15 out 1 1 0 1 p9
E hex 14 dez 16 out 1 1 1 0 rB
F hex 15 dez 17 out 1 1 1 1 qUMA

O sistema numérico octal , ou oct para abreviar, é o sistema numérico de base -8 e usa os dígitos de 0 a 7, ou seja, 10 representa 8 no decimal e 100 representa 64 no decimal. No entanto, o inglês usa um sistema de idioma numérico de base 10 e, portanto, um sistema octal verdadeiro pode usar um idioma diferente para evitar confusão com o sistema decimal.

No sistema decimal, cada casa é uma potência de dez . Por exemplo:

No sistema octal, cada local é uma potência de oito. Por exemplo:

Ao realizar o cálculo acima no sistema decimal familiar, vemos por que 112 em octal é igual a 64 + 8 + 2 = 74 em decimal.

Os numerais octais podem ser facilmente convertidos de representações binárias (semelhante a um sistema numeral quaternário ) agrupando dígitos binários consecutivos em grupos de três (começando da direita, para inteiros). Por exemplo, a representação binária para o decimal 74 é 1001010. Dois zeros podem ser adicionados à esquerda: (00) 1 001 010 , correspondendo aos dígitos octais 1 1 2 , resultando na representação octal 112.

A tabuada de multiplicação octal
× 1 2 3 4 5 6 7 10
1 1 2 3 4 5 6 7 10
2 2 4 6 10 12 14 16 20
3 3 6 11 14 17 22 25 30
4 4 10 14 20 24 30 34 40
5 5 12 17 24 31 36 43 50
6 6 14 22 30 36 44 52 60
7 7 16 25 34 43 52 61 70
10 10 20 30 40 50 60 70 100

Uso

Por nativos americanos

  • A língua Yuki na Califórnia tem um sistema octal porque os falantes contam usando os espaços entre os dedos em vez dos próprios dedos.
  • As línguas Pameanas no México também têm um sistema octal, porque seus falantes contam com os nós dos dedos de um punho fechado.

Por europeus

  • Foi sugerido que a palavra Proto-Indo-Européia (TORTA) reconstruída para "nove" poderia ser relacionada à palavra de TORTA para "novo". Com base nisso, alguns especularam que os proto-indo-europeus usavam um sistema de numeração octal, embora as evidências que apóiam isso sejam escassas.
  • Em 1668, John Wilkins em Um ensaio para um personagem real e uma linguagem filosófica propôs o uso da base 8 em vez de 10 "porque o caminho da dicotomia ou bipartição sendo o tipo de divisão mais natural e fácil, esse número é capaz de fazer isso. para um Unite ".
  • Em 1716, o rei Carlos XII da Suécia pediu a Emanuel Swedenborg que elaborasse um sistema numérico baseado em 64 em vez de 10. No entanto, Swedenborg argumentou que, para pessoas com menos inteligência do que o rei, uma base tão grande seria muito difícil e, em vez disso, propôs 8 como base . Em 1718, Swedenborg escreveu (mas não publicou) um manuscrito: "En ny rekenkonst som om vexlas wid Thalet 8 i stelle then wanliga wid Thalet 10" ("Uma nova aritmética (ou arte de contar) que muda no número 8 em vez de o de costume no número 10 "). Os números 1-7 são denotados pelas consoantes l, s, n, m, t, f, u (v) e zero pela vogal o. Assim, 8 = "lo", 16 = "so", 24 = "não", 64 = "loo", 512 = "looo" etc. Números com consoantes consecutivas são pronunciados com sons de vogais entre de acordo com uma regra especial.
  • Escrevendo sob o pseudônimo de "Hirossa Ap-Iccim" na The Gentleman's Magazine , (Londres) em julho de 1745, Hugh Jones propôs um sistema octal para moedas, pesos e medidas britânicos. "Considerando que razão e conveniência indicam para nós um padrão uniforme para todas as quantidades; que chamarei de padrão georgiano ; e isso é apenas para dividir cada inteiro em cada espécie em oito partes iguais, e cada parte novamente em 8 partículas reais ou imaginárias, tanto quanto for necessário. Pois embora todas as nações contam universalmente por dezenas (originalmente ocasionado pelo número de dígitos em ambas as mãos), ainda 8 é um número muito mais completo e cómodo; uma vez que é divisível em metades, quartos e meios quartos (ou unidades) sem uma fração, da qual subdivisão dez é impossível .... "Em um tratado posterior sobre computação Oitava (1753) Jones concluiu:" A aritmética por oitavas parece mais agradável à Natureza das Coisas e, portanto, pode ser chamada Aritmética natural em oposição àquela agora em uso, por décadas; que pode ser considerada aritmética artificial. "
  • Em 1801, James Anderson criticou os franceses por basearem o sistema métrico na aritmética decimal. Ele sugeriu a base 8, para a qual cunhou o termo octal . Seu trabalho pretendia ser matemática recreativa, mas ele sugeriu um sistema puramente octal de pesos e medidas e observou que o sistema existente de unidades inglesas já era, em uma extensão notável, um sistema octal.
  • Em meados do século 19, Alfred B. Taylor concluiu que "Nossa octonary [base 8] radix é, portanto, além de toda comparação, o" melhor possível "para um sistema de aritmética." A proposta incluía uma notação gráfica para os dígitos e novos nomes para os números, sugerindo que deveríamos contar " un , du , the , fo , pa , se , ki , unty , unty-un , unty-du " e assim por diante, com múltiplos sucessivos de oito denominados " unty , duty , thety , foty , paty , sety , kity e abaixo ". Assim, por exemplo, o número 65 (101 em octal) seria falado em octonário como under-un . Taylor também republicou alguns dos trabalhos de Swedenborg sobre octal como um apêndice às publicações citadas acima.

Em computadores

O Octal tornou-se amplamente utilizado na computação quando sistemas como o UNIVAC 1050 , PDP-8 , ICL 1900 e mainframes IBM empregavam palavras de 6 bits , 12 bits , 24 bits ou 36 bits . Octal era uma abreviatura ideal de binário para essas máquinas porque seu tamanho de palavra é divisível por três (cada dígito octal representa três dígitos binários). Assim, dois, quatro, oito ou doze dígitos podem exibir de forma concisa uma palavra de máquina inteira . Também cortou custos, permitindo que tubos Nixie , telas de sete segmentos e calculadoras sejam usados ​​para os consoles de operação, onde telas binárias eram muito complexas para usar, telas decimais precisavam de hardware complexo para converter rádios e telas hexadecimais necessárias para exibir mais numerais .

Todas as plataformas de computação modernas, no entanto, usam palavras de 16, 32 ou 64 bits, posteriormente divididas em bytes de oito bits . Em tais sistemas, três dígitos octais por byte seriam necessários, 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 forma bastante deselegante) apenas um bit (0 ou 1). Essa representação não oferece uma maneira de ler facilmente o byte mais significativo, porque ele está espalhado por quatro dígitos octais. Portanto, hexadecimal é mais comumente usado em linguagens de programação hoje, uma vez que dois dígitos hexadecimais especificam exatamente um byte. Algumas plataformas com tamanho de palavra potência de dois ainda têm subpalavras de instrução que são mais facilmente compreendidas se exibidas em octal; isso inclui a família PDP-11 e Motorola 68000 . A moderna arquitetura x86 onipresente também pertence a esta categoria, mas octal raramente é usado nesta plataforma, embora certas propriedades da codificação binária de opcodes se tornem mais facilmente aparentes quando exibidas em octal, por exemplo, o byte ModRM, que é dividido em campos de 2, 3 e 3 bits, portanto, octal pode ser útil na descrição dessas codificações. Antes da disponibilidade dos montadores , alguns programadores codificariam manualmente os programas em octal; por exemplo, Dick Whipple e John Arnold escreveram Tiny BASIC Extended diretamente em código de máquina, usando octal.

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 (consulte chmod ). Ele tem a vantagem de não exigir nenhum símbolo extra como dígitos (o sistema hexadecimal é de base 16 e, portanto, precisa de seis símbolos adicionais além de 0–9). Também é usado para displays digitais.

Em linguagens de programação, os literais octais são normalmente identificados com uma variedade de prefixos , incluindo o dígito 0, as letras oou q, a combinação dígito-letra 0oou o símbolo &ou $. Na convenção da Motorola , os números octais são prefixados com @, enquanto uma letra minúscula (ou maiúscula) oou qé adicionada como um postfix seguindo a convenção da Intel . No DOS simultâneo , DOS multiusuário e REAL / 32 , bem como no DOS Plus e DR-DOS, várias variáveis ​​de ambiente como $ CLS , $ ON , $ OFF , $ HEADER ou $ FOOTER suportam uma \nnnnotação de número octal e o DR-DOS DEBUG utiliza \para prefixar números octais também.

Por exemplo, o literal 73 (base 8) pode ser representada como 073, o73, q73, 0o73, \73, @73, &73, $73ou 73oem várias línguas.

As linguagens mais recentes estão abandonando o prefixo 0, já que os números decimais são freqüentemente representados com zeros à esquerda. O prefixo qfoi introduzido para evitar que o prefixo ofosse confundido com zero, enquanto o prefixo 0ofoi introduzido para evitar o início de um literal numérico com um caractere alfabético (como oou q), pois isso pode fazer com que o literal seja confundido com um nome de variável. O prefixo 0otambém segue o modelo definido pelo prefixo 0xusado para literais hexadecimais na linguagem C ; é compatível com Haskell , OCaml , Python a partir da versão 3.0, Raku , Ruby , Tcl a partir da versão 9, PHP a partir da versão 8.1 e deve ser compatível com ECMAScript 6 (o prefixo 0originalmente significava base 8 em JavaScript, mas poderia causar confusão, portanto, foi desencorajado no ECMAScript 3 e descartado no ECMAScript 5).

Números octais que são usados ​​em algumas linguagens de programação (C, Perl , PostScript ...) para representações textuais / gráficas de strings de byte quando alguns valores de byte (não representados em uma página de código, não gráficos, tendo um significado especial no contexto atual ou indesejados) tem que ser para escapar como \nnn. A representação octal pode ser particularmente útil com bytes não ASCII de UTF-8 , que codifica grupos de 6 bits e onde qualquer byte inicial tem valor octal \3nne qualquer byte de continuação tem valor octal \2nn.

Octal também foi usado como ponto flutuante nos computadores Ferranti Atlas (1962), Burroughs B5500 (1964), Burroughs B5700 (1971), Burroughs B6700 (1971) e Burroughs B7700 (1972).

Na aviação

Transponders em aeronaves transmitem um código , expresso como um número de quatro dígitos octais, quando interrogados por radar terrestre. Este código é usado para distinguir aeronaves diferentes na tela do radar.

Conversão entre bases

Conversão decimal para octal

Método de divisão euclidiana sucessiva por 8

Para converter decimais inteiros em octal, divida o número original pela maior potência possível de 8 e divida os restantes por potências sucessivamente menores de 8 até que a potência seja 1. A representação octal é formada pelos quocientes, escritos na ordem gerada pelo algoritmo. Por exemplo, para converter 125 10 em octal:

125 = 8 2 × 1 + 61
61 = 8 1 × 7 + 5
5 = 8 0 × 5 + 0

Portanto, 125 10 = 175 8 .

Outro exemplo:

900 = 8 3 × 1 + 388
388 = 8 2 × 6 + 4
4 = 8 1 × 0 + 4
4 = 8 0 × 4 + 0

Portanto, 900 10 = 1604 8 .

Método de multiplicação sucessiva por 8

Para converter uma fração decimal em octal, multiplique por 8; a parte inteira do resultado é o primeiro dígito da fração octal. Repita o processo com a parte fracionária do resultado, até que seja nulo ou dentro dos limites de erro aceitáveis.

Exemplo: converter 0,1640625 em octal:

0,1640625 × 8 = 1,3125 = 1 + 0,3125
0,3125 × 8 = 2,5 = 2 + 0,5
0,5 × 8 = 4,0 = 4 + 0

Portanto, 0,1640625 10 = 0,124 8 .

Esses dois métodos podem ser combinados para lidar com números decimais com partes inteiras e fracionárias, usando o primeiro na parte inteira e o segundo na parte fracionária.

Método de duplicação sucessiva

Para converter decimais inteiros em octal, prefixe o número com "0". Execute as seguintes etapas enquanto os dígitos permanecerem no lado direito da raiz: Dobre o valor para o lado esquerdo da raiz, usando regras octais , mova o ponto da raiz um dígito para a direita e, em seguida, coloque o valor dobrado abaixo do atual valor para que os pontos de raiz se alinhem. Se o ponto de raiz movido cruzar um dígito que seja 8 ou 9, converta-o em 0 ou 1 e adicione o transporte ao próximo dígito à esquerda do valor atual. Adicione octalmente esses dígitos à esquerda da raiz e simplesmente solte esses dígitos à direita, sem modificação.

Exemplo:

 0.4 9 1 8 decimal value
  +0
 ---------
   4.9 1 8
  +1 0
  --------
   6 1.1 8
  +1 4 2
  --------
   7 5 3.8
  +1 7 2 6
  --------
 1 1 4 6 6. octal value

Conversão de octal para decimal

Para converter um número k em decimal, use a fórmula que define sua representação na base 8:

Nesta fórmula, a i é um dígito octal individual sendo convertido, onde i é a posição do dígito (contando de 0 para o dígito mais à direita).

Exemplo: converta 764 8 em decimal:

764 8 = 7 × 8 2 + 6 × 8 1 + 4 × 8 0 = 448 + 48 + 4 = 500 10

Para números octais de dois dígitos, esse método equivale a multiplicar o dígito inicial por 8 e adicionar o segundo dígito para obter o total.

Exemplo: 65 8 = 6 × 8 + 5 = 53 10

Método de duplicação sucessiva

Para converter octais em decimais, prefixe o número com "0". Execute as seguintes etapas enquanto os dígitos permanecerem no lado direito da raiz: Dobre o valor para o lado esquerdo da raiz, usando regras decimais , mova o ponto da raiz um dígito para a direita e, em seguida, coloque o valor dobrado abaixo do atual valor para que os pontos de raiz se alinhem. Subtraia decimalmente esses dígitos à esquerda da raiz e simplesmente coloque esses dígitos à direita, sem modificação.

Exemplo:

 0.1 1 4 6 6  octal value
  -0
 -----------
   1.1 4 6 6
  -  2
  ----------
     9.4 6 6
  -  1 8
  ----------
     7 6.6 6
  -  1 5 2
  ----------
     6 1 4.6
  -  1 2 2 8
  ----------
     4 9 1 8. decimal value

Conversão de octal para binário

Para converter octal em binário, substitua cada dígito octal por sua representação binária.

Exemplo: converta 51 8 em binário:

5 8 = 101 2
1 8 = 001 2

Portanto, 51 8 = 101 001 2 .

Conversão de binário para octal

O processo é o inverso do algoritmo anterior. Os dígitos binários são agrupados em três, começando pelo bit menos significativo e prosseguindo para a esquerda e para a direita. Adicione zeros à esquerda (ou zeros à direita do ponto decimal) para preencher o último grupo de três, se necessário. Em seguida, substitua cada trio pelo dígito octal equivalente.

Por exemplo, converta o binário 1010111100 em octal:

001 010 111 100
1 2 7 4

Portanto, 1010111100 2 = 1274 8 .

Converta o binário 11100.01001 em octal:

011 100  .  010 010
3 4  .  2 2

Portanto, 11100,01001 2 = 34,22 8 .

Conversão de octal em hexadecimal

A conversão é feita em duas etapas usando o binário como base intermediária. Octal é convertido em binário e depois binário em hexadecimal, agrupando os dígitos por quatro, que correspondem cada um a um dígito hexadecimal.

Por exemplo, converta octal 1057 em hexadecimal:

Para binário:
1 0 5 7
001 000 101 111
depois para hexadecimal:
0010 0010 1111
2 2 F

Portanto, 1057 8 = 22F 16 .

Conversão hexadecimal em octal

A conversão de hexadecimal em octal ocorre primeiro convertendo os dígitos hexadecimais em valores binários de 4 bits e, em seguida, reagrupando os bits binários em dígitos octais de 3 bits.

Por exemplo, para converter 3FA5 16 :

Para binário:
3 F UMA 5
0011 1111 1010 0101
então para octal:
0 011 111 110 100 101
0 3 7 6 4 5

Portanto, 3FA5 16 = 37645 8 .

Numeros reais

Frações

Devido a ter apenas fatores de dois, muitas frações octais têm dígitos repetidos, embora estes tendam a ser bastante simples:

Base decimal
Fatores primos da base: 2 , 5
Fatores primos de um abaixo da base: 3
Fatores primos de um acima da base: 11
Outros fatores primos: 7 13 17 19 23 29 31
Base octal
Fatores primos da base: 2
Fatores primos de um abaixo da base: 7
Fatores primos de um acima da base: 3
Outros fatores primos: 5 13 15 21 23 27 35 37
Fração Fatores principais
do denominador
Representação posicional Representação posicional Fatores principais
do denominador
Fração
1/2 2 0,5 0,4 2 1/2
1/3 3 0. 3333 ... = 0. 3 0. 2525 ... = 0. 25 3 1/3
1/4 2 0,25 0,2 2 1/4
1/5 5 0,2 0. 1463 5 1/5
1/6 2 , 3 0,1 6 0,1 25 2 , 3 1/6
1/7 7 0. 142857 0. 1 7 1/7
1/8 2 0,125 0,1 2 1/10
1/9 3 0. 1 0. 07 3 1/11
1/10 2 , 5 0,1 0,0 6314 2 , 5 1/12
1/11 11 0. 09 0. 0564272135 13 13/01
1/12 2 , 3 0,08 3 0,0 52 2 , 3 14/01
13/01 13 0. 076923 0. 0473 15 15/1
14/01 2 , 7 0,0 714285 0,0 4 2 , 7 1/16
15/1 3 , 5 0,0 6 0. 0421 3 , 5 1/17
1/16 2 0,0625 0,04 2 1/20
1/17 17 0. 0588235294117647 0. 03607417 21 21/01
1/18 2 , 3 0,0 5 0,0 34 2 , 3 22/01
1/19 19 0. 052631578947368421 0. 032745 23 23/01
1/20 2 , 5 0,05 0,0 3146 2 , 5 24/01
21/01 3 , 7 0. 047619 0. 03 3 , 7 25/01
22/01 2 , 11 0,0 45 0,0 2721350564 2 , 13 26/1
23/01 23 0. 0434782608695652173913 0. 02620544131 27 1/27
24/01 2 , 3 0,041 6 0,0 25 2 , 3 1/30
25/01 5 0,04 0. 02436560507534121727 5 1/31
26/1 2 , 13 0,0 384615 0,0 2354 2 , 15 1/32
1/27 3 0. 037 0. 022755 3 1/33
28/01 2 , 7 0,03 571428 0,0 2 2 , 7 1/34
29/1 29 0. 0344827586206896551724137931 0. 0215173454106475626043236713 35 1/35
1/30 2 , 3 , 5 0,0 3 0,0 2104 2 , 3 , 5 1/36
1/31 31 0. 032258064516129 0. 02041 37 1/37
1/32 2 0,03125 0,02 2 1/40

Números irracionais

A tabela abaixo fornece as expansões de alguns números irracionais comuns em decimais e octais.

Número Representação posicional
Decimal Octal
2 (o comprimento da diagonal de um quadrado unitário ) 1,414 213 562 373 095 048 ... 1,3240 4746 3177 1674 ...
3 (o comprimento da diagonal de um cubo unitário ) 1.732 050 807 568 877 293 ... 1.5666 3656 4130 2312 ...
5 (o comprimento da diagonal de um retângulo 1 × 2 ) 2,236 067 977 499 789 696 ... 2,1706 7363 3457 7224 ...
φ (phi, a proporção áurea = (1+ 5 ) / 2 ) 1.618 033 988 749 894 848 ... 1.4743 3571 5627 7512 ...
π (pi, a razão entre a circunferência e o diâmetro de um círculo) 3,141 592 653 589 793 238 462 643
383 279 502 884 197 169 399 375 105 ...
3.1103 7552 4210 2643 ...
e (a base do logaritmo natural ) 2.718 281 828 459 045 235 ... 2,5576 0521 3050 5355 ...

Veja também

Referências

links externos