Conteúdo verificado

Hexadecimal

Assuntos Relacionados: Matemática

Fundo para as escolas Wikipédia

Arranjar uma seleção Wikipedia para as escolas no mundo em desenvolvimento sem internet foi uma iniciativa da SOS Children. Patrocinar crianças ajuda crianças no mundo em desenvolvimento para aprender também.

Em matemática e ciência da computação , hexadecimal (também base- 16, hexa, ou hex) é um sistema de numeração com um Radix, ou base, de 16. Ele usa dezasseis símbolos distintos, na maioria das vezes os símbolos 0-9 para representar valores de zero a nove, e A, B, C, D, E, F (ou A a F) para representar valores de dez a quinze.

Seu principal uso é como uma representação humana amigável de binário valores codificados, por isso é frequentemente usado em eletrônica digital e engenharia da computação. Uma vez que cada dígito hexadecimal representa quatro dígitos binários ( bits) -também chamados um mordidela-it é um compacto e facilmente traduzidos abreviada para expressar os valores em base dois .

IBM introduziu o atual sistema hexadecimal para o mundo da computação; uma versão anterior, usando os dígitos 0 - 9 e U - Z, foi introduzida em 1956 pelo Computador Bendix G-15.

Usos

0 hex = 0 dezembro = 0 outubro 0 0 0 0
1 hex = 01 de dezembro = 01 de outubro 0 0 0 1
2 hex = 02 de dezembro = 02 de outubro 0 0 1 0
3 hex = 03 de dezembro = 03 de outubro 0 0 1 1
4 hex = 04 de dezembro = 04 de outubro 0 1 0 0
5 hex = 05 de dezembro = 05 de outubro 0 1 0 1
6 hex = 06 de dezembro = 06 de outubro 0 1 1 0
7 hex = 07 de dezembro = 07 de outubro 0 1 1 1
8 hex = 08 de dezembro = 10 de outubro 1 0 0 0
9 hex = 09 de dezembro = 11 de outubro 1 0 0 1
Um hex = 10 de dezembro = 12 de outubro 1 0 1 0
B hex = 11 de dezembro = 13 de outubro 1 0 1 1
C hex = 12 de dezembro = 14 de outubro 1 1 0 0
D hex = 13 de dezembro = 15 de outubro 1 1 0 1
E hex = 14 de dezembro = 16 de outubro 1 1 1 0
F hex = 15 de dezembro = 17 de outubro 1 1 1 1

Em computação digital, hexadecimal é usado principalmente para representar bytes. As tentativas para representar os 256 possíveis valores de bytes por outros meios deram origem a problemas. Representando diretamente cada possível valor de byte com uma única representação de caracteres é executado em impublicável caracteres de controle do ASCII conjunto de caracteres. Mesmo se um conjunto padrão de caracteres imprimíveis foram concebidos para cada valor de byte, nem os utilizadores nem hardware de entrada estão equipados para lidar 256 caracteres únicos. A maioria hex software de edição exibe cada byte como um único personagem, mas caracteres não imprimíveis são normalmente substituídos com período ou em branco.

Em URLs, todos os caracteres podem ser codificados utilizando hexadecimal. Cada sequência de dígitos hexadecimais 2 (1 byte) é precedido por um por cento sinal. Por exemplo, o URL http://en.wikipedia.org/wiki/Main%20Page substitui um espaço (o que não é permitido em URLs) com o código hexadecimal para um espaço ( %20 ).

Representando hexadecimal

Em situações em que não há contexto, um número hexadecimal pode ser ambíguo e confuso com números expressos em outras bases. Há várias convenções para expressar de forma inequívoca os valores. Em matemática, um subscrito é muitas vezes usado em cada número que dá explicitamente a base: 159 10 é decimal 159; 159 16 é hexadecimal 159 que é igual a 345 10. Alguns autores preferem um subscrito texto, como o decimal 159 e 159 hex.

Em sistemas de texto lineares, tais como os usados na maioria dos ambientes de programação de computador, de uma variedade de métodos têm surgido:

  • Em URLs, códigos de caracteres são escritos como pares hexadecimais prefixados com % : http://www.example.com/name%20with%20spaces onde %20 é o espaço de caracteres (em branco), código 20 hex ou 32 decimal.
  • Em HTML, os caracteres podem ser expressos como hexadecimal usando a notação ꯍ . Cores de referência são expressos em hexadecimal prefixado com # : #FFFFFF que dá branco.
  • A linguagem de programação C (e seus descendentes) usar o prefixo 0x : 0x5A3 de caracteres e constantes de seqüência de caracteres podem expressar códigos de caracteres em hexadecimal com o prefixo \x seguido de dois dígitos hexadecimais: '\x1B' (especifica o Esc caractere de controle), "\x1B[0m\x1B[25;1H" é uma string contendo 11 caracteres (sem incluir uma implícita de fuga NUL). Para a saída de um valor hexadecimal, como com o função da família printf, o formato de código de conversão %X ou %x é usado.
  • No Padrão Unicode, um valor de caractere é representado com U+ seguido pelo valor hexadecimal: U+20AC é o Euro sinal (€).
  • MIME (extensões de Static Wikipedia - Euskera) caracteres cotar-imprimíveis por código dentro de um text/plain MIME-part prefixo corpo caracteres ASCII não imprimíveis com um igual a assinar = , como em Espa=D1a para enviar "España" (Espanha).
  • Em Intel derivado linguagens assembly, hexadecimal é indicado com um sufixo H ou h: FFh ou 0A3CH . Algumas implementações requerem um zero à esquerda quando o primeiro caractere não é um dígito: 0FFh
  • Outros idiomas montagem ( 6502, AT & T , Motorola), Pascal, e algumas versões do BASIC ( Commodore) e Forth utilizar $ como um prefixo: $5A3 .
  • Algumas linguagens de montagem (Microchip) usam a notação H'ABCD' (para ABCD 16).
  • * nix conchas (UNIX e afins) use um caractere de escape forma \x0FF em expressões e 0xFF para constantes.
  • Ada e VHDL incluir números hexadecimais em "aspas numéricos" base: 16#5A3#
  • Verilog representa constantes hexadecimais na forma 8'hFF , em que 8 é o número de bits no valor FF e é a constante hexadecimal.
  • Modula 2 e algumas outras linguagens usam # como prefixo: #01AF
  • O Linguagem de programação Smalltalk usa o prefixo 16r : 16r6EF7
  • Postscript indica hex com prefixo 16# : 16#ABCD . Dados binários (como imagem pixels) pode ser expressa como pares unprefixed hexadecimais consecutivos: AA213FD51B3801043FBC ...
  • Lisp comum usar os prefixos #x e #16r .
  • QBasic e Visual Basic, numerais hexadecimais com prefixo &H : &H5A3
  • BBC BASIC usa & para hex.
  • Série TI-89 e 92 utiliza 0h 0hA3 0h 0hA3
  • Notações, tais como X'5A3' são vistos às vezes, como em PL / I. Este é o formato mais comum para hexadecimal em mainframes IBM ( zSeries) e minicomputadores ( iSeries) rodando tradicionais sistemas operacionais (zOS, zVSE, zVM, TPF, OS / 400), e é usado em Assembler, PL / 1, Cobol, JCL, os scripts, comandos e outros lugares. Este formato era comum em outros (e agora obsoletos) sistemas IBM também.
  • Donald Knuth introduziu o uso de determinado tipo de letra para representar uma raiz particular, em seu livro O Livro Didático. Lá, representações hexadecimais são escritos em um carácter tipo Máquina de escrever: 5A3
A hexadecimal tabuada de multiplicar

Não há nenhuma convenção universal de usar minúsculas ou maiúsculas para os dígitos de letra, e cada um é prevalente ou preferencial por ambientes específicos para os padrões comunitários ou convenções.

A escolha de letras de A a F para representar os dígitos acima nove não era universal no início da história dos computadores. Durante os anos 1950, algumas instalações favorecido usando os dígitos 0 a 5 com um caráter macron ("¯") para indicar os valores 10-15. Usuários de Bendix G-15 computadores utilizados as letras U a Z.

Representações verbais

Não só há nenhum dígito para representar as quantidades de dez a quinze cartas-so são usadas como um substituto, mas a maioria Línguas da Europa Ocidental também falta uma nomenclatura para citar números hexadecimais. "Thirteen" e "quatorze" são decimal baseado, e apesar de Inglês tem um nomes para várias potências não-decimais: emparelhar pela primeira binário poder; marcar pela primeira poder vigesimal; dúzia, bruta, e grande bruto para os três primeiros duodecimais poderes. No entanto, nenhum nome Inglês descreve os poderes hexadecimais (correspondente ao decimal valores de 16, 256, 4096, 65536, ...). Algumas pessoas lêem números hexadecimal dígito por dígito como um número de telefone: 4DA é "quatro-dee-aye". No entanto, a letra 'A' soa semelhante a oito, 'C' soa semelhante a três, e 'D' pode ser facilmente confundido com o sufixo 'ty': É 4D ou quarenta anos? Outras pessoas evitar confusão, usando a Alfabeto fonético NATO: 4DA é "quatro-delta-alpha". Da mesma forma, alguns usam o Army / Navy Joint alfabeto fonético ("quatro-dog capaz"), ou um sistema semelhante ad hoc.

Sinais

O sistema hexadecimal pode expressar números negativos da mesma maneira que em decimal: de -2 a -42 representam e assim por diante.

No entanto, alguns preferem, em vez de expressar os padrões de bits exatas usadas na processador e considerar valores hexadecimais melhor tratadas como valores não assinados. Desta forma, o número negativo -42 pode ser escrito como FFFF FFD6 em 32 bits Registo CPU, como C228 0000 em um 32-bit FPU registrar ou C045 0000 0000 0000 num registo FPU 64-bit.

Frações

Tal como acontece com outros sistemas de numeração, o sistema hexadecimal pode ser utilizado para representar números racionais , embora dígitos recorrentes são comuns desde dezesseis (10h) tem apenas um único fator principal (dois):

½
=
0,8
=
0.2 A AAAAAAA ... 1/A
=
0.1 9 99999999 ... 1/E
=
0,1 249 249249 ...
=
0. 5 555555555 ... 1/7
=
0. 249 2492492 ... 1/B
=
0. 1745D 1745D ... 1/F
=
0. 1 111111111 ...
¼
=
0,4
=
0,2 1/C
=
0.1 5 55555555 ... 1/10
=
0,1
=
0. 3 333333333 ... 1/9
=
0. 1C7 1C71C71 ... 1/D
=
0. 13B 13B13B1 ... 1/11
=
0. 0F 0F0F0F0F ...

Para qualquer base, 0,1 (ou "1/10") é sempre o equivalente a um dividido pela representação de que o valor de base no seu próprio sistema de numeração: Contagem na base 3 é 0, 1, 2, 10 (três). Assim, se uma divisão por dois por binário ou dividir um a dezasseis para hexadecimal, ambas as fracções são escritas como 0.1 . Uma vez que a raiz é 16 um quadrado perfeito (4²), fracções expressas em hexadecimal têm um período fracionário com muito mais frequência do que os decimais, e não há números cíclicos (exceto um dígito triviais). Dígitos recorrentes são exibidos quando o denominador menor em termos tem uma fator primordial não encontrado na raiz; Assim, quando usando a notação hexadecimal, todas as frações com denominadores que não são um potência de dois resultado em uma seqüência infinita de dígitos (como terços e quintos) recorrentes. Isso faz com que hexadecimal (e binário) menos conveniente do que decimal para representar números racionais desde um maior mentira proporção fora de sua faixa de representação finita.

Todos os números racionais finitos representáveis em hexadecimal também são finitos representável em decimal, duodecimal e sexagesimal, isto é, qualquer número hexadecimal com um número finito de dígitos tem um número finito de dígitos, quando expressa nessas outras bases. Por outro lado, apenas uma fração daqueles finito representável nos últimos bases são representável finitamente em hexadecimal: Ou seja, decimais 0,1 corresponde à representação recorrente infinito 0,199999999999 ... em hexadecimal. No entanto, hexadecimal é mais eficiente do que bases 12 e 60 para representar frações com potências de dois no denominador (por exemplo, decimal 1/16 é de 0,1 em hexadecimal, 0,09 em duodecimal, 0; 3,45 em sexagesimal e 0,0625 em decimal).

Tradução binária

A maioria dos computadores manipular dados binários, mas é difícil para os seres humanos para trabalhar com o grande número de dígitos para até mesmo um número relativamente pequeno binário. Embora a maioria dos seres humanos estão familiarizados com o sistema de base 10, é muito mais fácil para mapear binário para hexadecimal do que decimal porque cada hexadecimais mapas dígito para um número inteiro de bits (4 de 10). Este exemplo converte 1.111 2 a base dez. Uma vez que cada posição em um numeral binário pode conter um 1 ou 0, o seu valor pode ser facilmente determinada pela sua posição a partir da direita:

  • 0001 2 = 1 10
  • 0010 2 = 2 10
  • 0100 2 4 10 =
  • 1000 2 = 8 10

Portanto:

1111 2 = 8 10 + 4 10 + 2 10 + 1 10
= 15 10

Com surpreendentemente pouco de prática, o mapeamento de 1111 2 a F 16 em uma etapa torna-se fácil: ver quadro em usos . A vantagem de se utilizar, em vez de hexadecimal decimais aumenta rapidamente com o tamanho do número. Quando o número se torna grande, a conversão para decimal é muito tedioso. No entanto, quando o mapeamento para hexadecimal, é trivial a considerar a cadeia binária como quatro grupos de dígitos e mapear cada um para um único dígito hexadecimal.

Este exemplo mostra a conversão de um número binário para decimal, o mapeamento de cada dígito do valor decimal, e somando os resultados.

01011110101101010010 2 = 262144 10 + 10 + 65536 32768 + 16384 10 10 + 8192 10 10 + 2048 + 512 + 256 10 10 + 64 10 + 16 10 + 2 10
= 387,922 10

Comparar este para a conversão em hexadecimal, em que cada grupo de quatro dígitos pode ser considerado de forma independente, e convertido directamente:

01011110101101010010 2 = 0101   1110   1011   0101   0010 2
&; Nbsp; = 5 E B 5 2 16
= 5EB52 16

A conversão de hexadecimal para binário é igualmente direta.

O sistema octal também pode ser útil como uma ferramenta para pessoas que precisam de lidar diretamente com os dados do computador binários. Octal representa dados como três bits por caractere, em vez de quatro.

Converter a partir de outras bases

Adição e multiplicação

Também é possível fazer a conversão através da atribuição de cada lugar na base de fonte a representação hexadecimal do seu valor lugar e, em seguida, executar multiplicação e adição de obter a representação final.

Conversão via binária

Como a maioria dos computadores funcionar em binário, o caminho normal para um computador para fazer essa conversão seria converter a primeira binário (fazendo multiplicação e adição em binário) e, em seguida, fazer uso do mapeamento direto de binário para hexadecimal.

Ferramentas de conversão

A maioria dos sistemas de computadores modernos com interfaces gráficas de usuário fornece um utilitário calculadora embutida, capaz de realizar conversões entre diferentes radixes, incluindo geralmente hexadecimal.

Em Microsoft do Windows , o Utilitário calculadora pode ser definido como modo de calculadora científica, que permite conversões entre radix 16 (hexadecimal), 10 (decimal), 8 ( octal) e 2 ( binário ); as bases mais utilizada pelos programadores. No Modo Científico, a na tela teclado numérico inclui a dígitos hexadecimais de A a F que estão ativas quando "Hex" é selecionado.

Cultural

Etimologia

Foi IBM que decidiu sobre o prefixo "hexa" em vez do prefixo latino adequada de "sexa". A palavra "hexadecimal" é estranho em que hexa é derivado do grego έξ (hex) para "seis" e decimal é derivado do latim para "décimo". Ele pode ter sido derivada da raiz latina, mas deka grego é tão parecido com o latim decem que alguns não consideram esta nomenclatura inconsistente. Um termo mais velho era o latino-like "sexidecimal" incorreto (correto Latina é "sedecim" para 16), mas que foi alterado porque algumas pessoas pensaram que demasiado ousado, e também teve um significado alternativo de " base 60 ". No entanto, a palavra" sexagesimal "(base 60) mantém o prefixo. A documentação anterior Bendix usou o termo" sexadecimal ". Donald Knuth indicou que o termo etimologicamente correto é "senidenary", a partir do termo latino para "agrupados por 16". (Os termos "binário", "ternário" e "quaternário" são da mesma construção Latina, eo termo etimologicamente correto para aritmética "decimal" é "denário".) Schwartzman observa que a forma puramente Latina esperado seria "sexadecimal", mas, em seguida, hackers de computador seria tentado a encurtar a palavra para "sexo". Aliás, o etimologicamente adequada grega prazo seria hexadecadic (embora em Grego moderno deca-hexadic (δεκαεξαδικός) é mais comumente usado).

Padrões comuns e humor

Hexadecimal é usado às vezes em piadas programador porque certas palavras podem ser formadas utilizando apenas dígitos hexadecimais. Algumas dessas palavras são "morto", "carne", "babe", e com substituições apropriadas "c0ffee". Desde que estes são facilmente reconhecidas por programadores, configurações de depuração, por vezes, inicializar a memória a eles para ajudar os programadores a ver quando alguma coisa não foi inicializado. Algumas pessoas adicionar um H após um número, se eles querem mostrar que está escrito em hexadecimal. Em Intel mais velho sintaxe de montagem, isso às vezes é o caso. " Hexspeak "pode ser o precursor da moderna linguagem de web" 1337speak "

Um exemplo é a número mágico em arquivos FAT Mach-O e programas Java, que é " CAFEBABE ". Ficheiros de uma arquitetura Mach-O tem a magia número " FEEDFACE "no seu início.

A Verificação recompensa Knuth é um dólar hexadecimal, ou US $ 2.56.

A tabela a seguir mostra uma piada em hexadecimal:

 3x12 = 36
 2x12 = 24
 1x12 = 12
 0x12 = 18

Os três primeiros são interpretados como multiplicação, mas na última, "0x" sinais interpretação hexadecimal de 12, que é 18.

0xDEADBEEF às vezes é colocado em memória não inicializada.

Outra piada baseado no uso de uma palavra que contém apenas letras do primeiro seis no alfabeto (e, assim, aqueles utilizados em hexadecimal) é ...

Se apenas pessoas mortas entender hexadecimal, quantas pessoas entendem hexadecimal?
Neste caso, DEAD refere-se a um número hexadecimal (57005 base 10), e não o estado de não estar vivo.

Microsoft Windows XP limpa seus arquivos de index.dat bloqueadas com os códigos hexadecimais: "0BADF00D".

Dois padrões de bits comuns muitas vezes empregadas para testar hardware são 01010101 e 10101010 (seus valores hexadecimais correspondentes são 55h e AAh, respectivamente). A razão para a sua utilização é alternar entre off ('0') para a ('1') ou vice-versa quando se alterna entre esses dois padrões. Estes dois valores são muitas vezes utilizados em conjunto, como assinaturas nos sectores do sistema de PC crítica (por exemplo, a palavra hex, 0xAA55 que em sistemas de pequeno-endian é 55h seguido de AAh, deve, no final de uma válida Master Boot Record).

Sistema de numeração primária

Tem havido tentativas para promover ocasionais hexadecimal como o sistema de numeração preferido. Estas tentativas geralmente propor pronúncia e / ou simbologia. Por vezes, a proposta unifica as medidas padrão de modo que eles são múltiplos de 16.

Um exemplo de medidas padrão unificadores é Hexadecimal tempo que se subdivide um dia a 16, de modo que existem 16 "hexhours" em um dia.

Retirado de " http://en.wikipedia.org/w/index.php?title=Hexadecimal&oldid=199334662 "