(Parte 1 de 4)

Entender os conceitos básicos de sistemas de numeração, como base, valor posicional e valor simbólico.

Entender como trabalhar com números representados nos sistemas de numeração binário, octal e hexadecimal.

Abreviar números binários como octais ou hexadecimais.

Converter números octais e hexadecimais em binários.

Converter entre números decimais e seus equivalentes binários, octais e hexadecimais.

Entender a aritmética binária e como os números binários negativos são representados usando-se a notação de complemento de dois.

Aqui há apenas números ratifi cados. William Shakespeare

A natureza tem um tipo de sistema de coordenadas geométricas e aritméticas, porque a natureza tem todos os tipos de modelos.

Aquilo que experimentamos na natureza está na forma de modelos, e todos os modelos da natureza são muito bonitos.

Eu descobri que o sistema da natureza deve ser uma beleza real, porque em química nós descobrimos que as associações são sempre lindos números inteiros — não existem frações. Richard Buckminster Fuller

C# — Como ProgramarB-2

B.1 Introdução

Neste apêndice apresentamos os principais sistemas de numeração usados pelos programadores, particularmente quando eles trabalham em projetos de software que exigem interação próxima com o hardware em “nível de máquina”. Projetos como esses incluem os sistemas operacionais, o software de rede de computador, os compiladores, os sistemas de bancos de dados e os aplicativos que exigem alto desempenho.

Quando escrevemos um inteiro como 227 ou –63 em um programa, assumimos que o número está no sistema de numeração decimal (base 10). Os dígitos do sistema de numeração decimal são 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. O dígito mais baixo é 0 e o mais alto é 9 (um a menos do que a base de 10). Internamente, os computadores usam o sistema de numeração binário (base 2). O sistema de numeração binário tem apenas dois dígitos, 0 e 1. Seu dígito mais baixo é 0 e seu dígito mais alto é 1 (um a menos do que a base de 2). A Figura B.1 resume os dígitos usados nos sistemas de numeração binário, octal, decimal e hexadecimal.

Como veremos, os números binários tendem a ser muito mais longos do que seus equivalentes decimais. Os programadores que trabalham em linguagens de montagem (assembler) e em linguagens de alto nível que permitem chegar até o “nível de máquina” acham complicado trabalhar com os números binários. Assim, os dois outros sistemas de numeração — o sistema de numeração octal (base 8) e o sistema de numeração hexadecimal (base 16) — são conhecidos principalmente porque são convenientes para abreviar os números binários.

No sistema de numeração octal os dígitos variam de 0 a 7. Como o sistema de numeração binário e o sistema de numeração octal têm menos dígitos do que o sistema de numeração decimal, seus dígitos são iguais aos dígitos correspondentes em decimal.

Resumo

B.1 Introdução B.2 Abreviação dos números binários como números octais e hexadecimais B.3 Conversão dos números octais e hexadecimais em números binários B.4 Conversão de binário, octal ou hexadecimal em decimal B.5 Conversão de decimal em binário, octal ou hexadecimal B.6 Números binários negativos: notação de complemento de dois

Resumo Terminologia Exercício de auto-revisão Respostas dos exercícios de auto-revisão Exercícios

A (valor decimal: 10) B (valor decimal: 1) C (valor decimal: 12) D (valor decimal: 13) E (valor decimal: 14) F (valor decimal: 15)

Dígito binário Dígito octal Dígito decimal Dígito hexadecimal

Figura B.1 Dígitos dos sistemas de numeração binário, octal, decimal e hexadecimal.

Apêndice B Sistemas de NumeraçãoB-3

O problema do sistema de numeração hexadecimal é que ele requer dezesseis dígitos — um dígito mais baixo do que 0 e um dígito mais alto com um valor equivalente a decimal 15 (um a menos do que a base de 16). Por convenção usamos as letras A a F para representar os dígitos hexadecimais correspondentes aos valores decimais 10 a 15. Assim, em hexadecimal podemos ter números como 876, que consistem exclusivamente em dígitos decimais, números como 8A55F, que consistem em dígitos e letras, e números como FFE, que consistem exclusivamente em letras. Eventualmente, um número hexadecimal escreve uma palavra comum como FACE, FACA ou FEDE — isso pode parecer estranho para os programadores que estão acostumados a trabalhar com números. A Figura B.2 resume cada um dos sistemas de numeração.

Cada um desses sistemas de numeração usa a notação posicional — cada posição na qual um dígito está escrito tem um valor posicional diferente. Por exemplo, no número decimal 937 (o 9, o 3 e o 7 são referidos como valores simbólicos), dizemos que o 7 está escrito na posição das unidades, o 3 está escrito na posição das dezenas e o 9 está escrito na posição das centenas. Observe que cada uma dessas posições é uma potência da base (base 10) e que essas potências começam em 0 e aumentam em 1 à medida que nos movemos para a esquerda no número (Figura B.3).

Para os números decimais mais longos, as próximas posições à esquerda seriam a posição dos milhares (10 à terceira potência), a posição das dezenas de milhares (10 à quarta potência), a posição das centenas de milhares (10 à quinta potência), a posição dos milhões (10 à sexta potência), a posição das dezenas de milhões (10 à sétima potência) e assim por diante.

No número binário 101 dizemos que o 1 mais à direita está escrito na posição dos uns, o 0 está escrito na posição dos dois e o 1 mais à esquerda está escrito na posição dos quatros. Observe que cada uma dessas posições é uma potência da base (base 2) e que essas potências começam em 0 e aumentam em 1 à medida que nos movemos para a esquerda no número (Figura B.4).

Nos números binários mais longos as próximas posições à esquerda seriam a posição dos oitos (2 à terceira potência), a posição dos dezesseis (2 à quarta potência), a posição dos trinta e dois (2 à quinta potência), a posição dos sessenta e quatros (2 à sexta potência) e assim por diante.

No número octal 425 dizemos que o 5 é escrito na posição dos uns, o 2 é escrito na posição dos oitos e o 4 é escrito na posição dos sessenta e quatros. Observe que cada uma dessas posições é uma potência da base (base 8) e que essas potências começam em 0 e aumentam em 1 à medida que nos movemos para a esquerda no número (Figura B.5).

Figura B.2 Comparação entre os sistemas de numeração binário, octal, decimal e hexadecimal.

Base 2 8 10 16 Dígito mais baixo 0 0 0 0 Dígito mais alto 1 7 9 F

Atributo Binário Octal Decimal Hexadecimal

Valores posicionais no sistema de numeração decimal

Dígito decimal 9 3 7 Nome da posição Centenas Dezenas Unidades Valor posicional 100 10 1

Valor posicional como potência da base (10) 102 101 100

Figura B.3 Valores posicionais no sistema de numeração decimal.

Dígito binário 1 0 1 Nome da posição Quatros Dois Uns Valor posicional 4 2 1

Valor posicional como uma potência da base (2) 2 21 20

Figura B.4 Valores posicionais no sistema de numeração binário.

Valores posicionais no sistema de numeração binário

C# — Como ProgramarB-4

Nos números octais mais longos, as próximas posições à esquerda seriam a posição dos quinhentos e doze (8 à terceira potência), a posição dos quatrocentos e noventa e seis (8 à quarta potência), a posição dos trinta e dois mil, setecentos e sessenta e oito (8 à quinta potência) e assim por diante.

No número hexadecimal 3DA dizemos que o A está escrito na posição dos uns, o D está escrito na posição dos dezesseis e o 3 está escrito na posição dos duzentos e cinqüenta e seis. Observe que cada uma dessas posições é uma potência da base (base 16) e que essas potências começam em 0 e aumentam em 1 à medida que nos movemos para a esquerda no número (Figura B.6).

Nos números hexadecimais mais longos as próximas posições à esquerda seriam a posição quatro mil e noventa e seis (16 à terceira potência), a posição sessenta e cinco mil, quinhentos e trinta e seis (16 à quarta potência) e assim por diante.

B.2 Abreviação dos números binários como números octais e hexadecimais

Em computação os números octais e hexadecimais são usados para abreviar representações binárias longas. A Figura B.7 destaca o fato de que os números binários longos podem ser expressos de modo conciso nos sistemas de numeração com bases mais altas do que o sistema de numeração binário.

Um relacionamento importante que tanto o sistema de numeração octal quanto o sistema de numeração hexadecimal têm com o sistema binário é que as bases dos sistemas octal e hexadecimal (8 e 16, respectivamente) são potências da base do sistema de numeração binário (base 2). Examine o número binário de 12 dígitos a seguir e seus equivalentes octal e hexadecimal. Veja se você consegue determinar como esse relacionamento é conveniente para abreviar os números binários em octal ou hexadecimal. A resposta se encontra depois dos números.

100011010001 43218D1

Número binário Equivalente octal Equivalente hexadecimal

Para ver como o número binário é convertido facilmente em octal, basta dividir o número binário de 12 dígitos em grupos de três bits consecutivos cada e escrever esses grupos sobre os dígitos correspondentes do número octal, como a seguir:

Observe que o dígito octal que você escreveu abaixo de cada grupo de três bits corresponde precisamente ao equivalente octal daquele número binário de 3 dígitos, como mostra a Figura B.7.

(Parte 1 de 4)

Comentários