11

Click here to load reader

cs-htp_app-b

Embed Size (px)

Citation preview

Page 1: cs-htp_app-b

BSISTEMAS DE NUMERAÇÃO

OBJETIVOS

• 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

Page 2: cs-htp_app-b

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 nu-meraçã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 progra-madores 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 nu-meraçã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çãoB.2 Abreviação dos números binários como números octais e hexadecimaisB.3 Conversão dos números octais e hexadecimais em números bináriosB.4 Conversão de binário, octal ou hexadecimal em decimalB.5 Conversão de decimal em binário, octal ou hexadecimalB.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

0 0 0 01 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 9 9 A (valor decimal: 10) B (valor decimal: 11) 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.

Page 3: cs-htp_app-b

Apêndice B Sistemas de Numeração B-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 UnidadesValor 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 UnsValor posicional 4 2 1

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

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

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

Page 4: cs-htp_app-b

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 ses-senta 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 de-zesseis 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 hexa-decimal. 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.

Número binário Equivalente octal Equivalente hexadecimal100011010001 4321 8D1

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

100 011 010 001

4 3 2 1

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

Figura B.5 Valores posicionais no sistema de numeração octal.

Valores posicionais no sistema de numeração octal

Dígito decimal 4 2 5

Nome da posição Sessenta e quatros Oitos UnsValor posicional 64 8 1

Valor posicional como uma potência da base (8) 82 81 80

Figura B.6 Valores posicionais no sistema de numeração hexadecimal.

Valores posicionais no sistema de numeração hexadecimal

Dígito decimal 3 D A

Nome da posição Duzentos e cinqüenta e seis Dezesseis UnsValor posicional 256 16 1

Valor posicional como uma potência da base (16) 162 161 160

Page 5: cs-htp_app-b

Apêndice B Sistemas de Numeração B-5

O mesmo tipo de relacionamento pode ser observado na conversão de números de binário em hexadecimal. Divida o número binário de 12 dígitos em grupos de quatro bits consecutivos cada e escreva aqueles grupos sobre os dígitos correspon-dentes do número hexadecimal, como a seguir:

1000 1101 0001

8 D 1

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

B.3 Conversão dos números octais e hexadecimais em números binários

Na seção anterior vimos como converter os números binários em seus equivalentes octais formando grupos de dígitos binários e simplesmente reescrevendo esses grupos como seus valores equivalentes em dígitos octais ou valores de dígito hexadecimal. Esse processo pode ser usado inversamente para produzir o equivalente binário de determinado número octal ou hexadecimal.

Por exemplo, o número octal 653 é convertido em binário simplesmente escrevendo-se o 6 como seu equivalente bi-nário de 3 dígitos 110, o 5 como seu equivalente binário de 3 dígitos 101 e o 3 como seu equivalente binário de 3 dígitos 011 para formar o número binário de 9 dígitos 110101011.

O número hexadecimal FAD5 é convertido em binário simplesmente escrevendo-se o F como seu equivalente binário de 4 dígitos 1111, o A como seu equivalente binário de 4 dígitos 1010, o D como seu equivalente binário de 4 dígitos 1101 e o 5 como seu equivalente binário de 4 dígitos 0101 para formar o número de 16 dígitos 1111101011010101.

B.4 Conversão de binário, octal ou hexadecimal em decimal

Como estamos acostumados a trabalhar em decimal, quase sempre é conveniente converter um número binário, octal ou he-xadecimal em decimal para ter uma idéia do que “realmente” vale o número. Nossos diagramas da Seção B.1 expressam os valores posicionais em decimal. Para converter um número em decimal de outra base, multiplique o equivalente decimal de cada dígito por seu valor posicional e some esses produtos. Por exemplo, o número binário 110101 é convertido no decimal 53, como mostra a Figura B.8.

Para converter o octal 7614 no decimal 3980 usamos a mesma técnica, só que dessa vez usamos os valores posicionais octais apropriados mostrados na Figura B.9.

Para converter o hexadecimal AD3B no decimal 44347 usamos a mesma técnica, só que dessa vez usamos os valores posicionais hexadecimais apropriados mostrados na Figura B.10.

Figura B.7 Equivalentes decimal, binário, octal e hexadecimal.

0 0 0 01 1 1 12 10 2 23 11 3 34 100 4 45 101 5 56 110 6 67 111 7 78 1000 10 89 1001 11 910 1010 12 A11 1011 13 B12 1100 14 C13 1101 15 D14 1110 16 E15 1111 17 F16 10000 20 10

Número decimal Representação binária Representação octal Representação hexadecimal

Page 6: cs-htp_app-b

C# — Como ProgramarB-6

B.5 Conversão de decimal em binário, octal ou hexadecimal

As conversões da seção anterior decorrem naturalmente das convenções da notação posicional. A conversão de decimal em binário, octal ou hexadecimal também segue essas convenções.

Digamos que você queira converter o decimal 57 em binário. Começamos escrevendo os valores posicionais das colunas da direita para a esquerda até atingir uma coluna cujo valor posicional seja maior do que o número decimal. Não precisamos daquela coluna e, portanto, a descartamos. Assim, primeiramente escrevemos:

Valores posicionais: 64 32 16 8 4 2 1

Em seguida, descartamos a coluna com o valor posicional 64:

Valores posicionais: 32 16 8 4 2 1

Trabalhamos então da coluna mais à esquerda para a direita. Dividimos 32 por 57 e observamos que há um 32 em 57 com um resto de 25 e escrevemos 1 na coluna 32. Dividimos o 16 por 25 e observamos que há um 16 em 25 com um resto de 9 e escrevemos 1 na coluna 16. Dividimos 8 por 9 e observamos que há um 8 em 9 com um resto de 1. As duas próximas colunas produzem cada uma quocientes de zero quando seus valores posicionais são divididos por 1, e escrevemos 0s nas colunas 4 e 2. Finalmente, 1 dividido por 1 é 1, e escrevemos 1 na coluna 1. Isso resulta em:

Valores posicionais: 32 16 8 4 2 1

Valores simbólicos: 1 1 1 0 0 1

e, assim, o decimal 57 é equivalente ao binário 111001.

Para converter o decimal 103 em octal, começamos escrevendo os valores posicionais das colunas até atingir uma coluna cujo valor posicional é maior do que o número decimal. Não precisamos dessa coluna e podemos descartá-la. Assim, primeiramente escrevemos:

Figura B.9 Convertendo um número octal em decimal.

Convertendo um número octal em decimal

Valores posicionais 512 64 8 1Valores simbólicos 7 6 1 4Produtos 7*512=3584 6*64=384 1*8=8 4*1=4Soma = 3584 + 384 + 8 + 4 = 3980

Convertendo um número hexadecimal em decimal

Figura B.10 Convertendo um número hexadecimal em decimal.

Valores posicionais 4096 256 16 1

Valores simbólicos A D 3 B

Produtos A*4096=40960 D*256=3328 3*16=48 B*1=11

Soma + 40960 + 3328 + 48 + 11 = 44347

Valores posicionais 32 16 8 4 2 1

Valores simbólicos 1 1 0 1 0 1

Produtos 1*32=32 1*16=16 0*8=0 1*4=4 0*2=0 1*1=1

Soma = 32 + 16 + 0 + 4 + 0 + 1 = 53

Figura B.8 Convertendo um número binário em decimal.

Convertendo um número binário em decimal

Page 7: cs-htp_app-b

Apêndice B Sistemas de Numeração B-7

Valores posicionais: 512 64 8 1

Em seguida, descartamos a coluna com o valor posicional 512 e temos:

Valores posicionais: 64 8 1

Trabalhamos então da coluna mais à esquerda para a direita. Dividimos 64 por 103 e observamos que há um 64 em 103 com um resto de 39 e escrevemos 1 na coluna 64. Dividimos 8 por 39 e observamos que há quatro 8s em 39 com um resto de 7 e escrevemos 4 na coluna 8. Finalmente, dividimos 1 por 7 e observamos que há sete 1s em 7 sem resto e escrevemos 7 na coluna 1. Isso resulta em:

Valores posicionais: 64 8 1

Valores simbólicos: 1 4 7

e, assim, o decimal 103 é equivalente ao octal 147.

Para convertermos o decimal 375 em hexadecimal, começamos escrevendo os valores posicionais das colunas até atin-gir uma coluna cujo valor posicional é maior do que o número decimal. Não precisamos dessa coluna e podemos descartá-la. Assim, escrevemos:

Valores posicionais: 4096 256 16 1

Em seguida descartamos a coluna com o valor posicional 4096, e isso resulta em:

Valores posicionais: 256 16 1

Trabalhamos então da coluna mais à esquerda para a direita. Dividimos 256 por 375 e observamos que há um 256 em 375 com um resto de 119 e escrevemos 1 na coluna 256. Dividimos 16 por 119 e observamos que há sete 16s em 119 com um resto 7 e escrevemos 7 na coluna 16. Finalmente dividimos 1 por 7 e observamos que há sete 1s em 7 sem resto e escrevemos 7 na coluna 1. Isso resulta em:

Valores posicionais: 256 16 1

Valores simbólicos: 1 7 7

e, assim, o decimal 375 é equivalente ao haxadecimal 177.

B.6 Números binários negativos: notação de complemento de dois

A discussão deste apêndice se concentrou nos números positivos. Nesta seção explicamos como os computadores represen-tam os números negativos usando a notação de complemento de dois. Primeiramente explicamos como o complemento de dois de um número binário é formado e, em seguida, mostramos o motivo pelo qual ele representa o valor negativo daquele determinado número binário.

Pense em uma máquina com inteiros de 32 bits. Suponhamos que

int num = 13;

A representação de 32 bits de num é

00000000 00000000 00000000 00001101

Para formar o negativo de num precisamos antes formar seu complemento de um aplicando o operador ^ do C#:

complementoDeUm = num ^ 0x7FFFFFFF;

Internamente, complementoDeUm agora é o num com cada um de seus bits invertidos — os uns tornam-se zeros e os zeros tornam-se uns, como a seguir:

num:

00000000 00000000 00000000 00001101

complementoDeUm:

11111111 11111111 11111111 11110010

Page 8: cs-htp_app-b

C# — Como ProgramarB-8

Para formarmos o complemento de dois de num apenas incluímos um ao complemento de um de num. Assim:

O complemento de dois de num:

11111111 11111111 11111111 11110011

Se isso é realmente igual a –13, podemos incluí-lo no binário 13 e obter um resultado de 0. Vamos tentar:

00000000 00000000 00000000 00001101

+11111111 11111111 11111111 11110011

---------------------------------------

00000000 00000000 00000000 00000000

O bit de transporte (“carry” ou “vai um”) na coluna mais à esquerda é descartado e temos zero como resultado. Se incluísse-mos o complemento de um de um número ao número, o resultado seria todo composto por 1s. O segredo para chegar a um resultado de zeros é que o complemento de dois seja 1 a mais do que o complemento de um. A adição de 1 faz com que cada coluna some-se a 0 com um transporte de 1. O transporte continua se movendo para a esquerda até que ele seja descartado no bit mais à esquerda, motivo pelo qual o número resultante é composto todo por zeros.

Na verdade, os computadores executam uma subtração como

x = a - num;

somando o complemento de dois de num a a desta maneira:

x = a + ( complementoDeUm + 1 );

Suponhamos que a seja 27 e num seja 13, como antes. Se o complemento de dois de num for realmente o negativo de num, então a soma do complemento de dois do valor a a deve produzir o resultado 14. Vamos tentar isto:

a (ou seja, 27) 00000000 00000000 00000000 00011011

+( complementoDeUm + 1 ) +11111111 11111111 11111111 11110011

---------------------------------------

00000000 00000000 00000000 00001110

o que, sem dúvida, é igual a 14.

Resumo

• Quando escrevemos um inteiro como 19 ou 227 ou –63 em um programa C#, o número é assumido automaticamente como estando 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 dígito 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 só tem 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.

• O sistema de numeração octal (base 8) e o sistema de numeração hexadecimal (base 16) são conhecidos principalmente porque eles tornam conveniente a abreviação dos números binários.

• Os dígitos do sistema de numeração octal variam de 0 a 7.

• O sistema de numeração hexadecimal representa um problema porque ele requer 16 dígitos — um dígito mais baixo do que 0 e um dígito mais alto do que um valor equivalente ao 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.

• 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 posicio-nal diferente.

• Um relacionamento particularmente importante que tanto o sistema de numeração octal quanto o hexadecimal tem com o sistema binário é que as bases do octal e do hexadecimal (8 e 16, respectivamente) são potências da base do sistema de numeração binário (base 2).

• Para converter um número octal em um número binário basta substituir cada dígito octal por seu equivalente binário de três dígitos.

• Para converter um número hexadecimal em um número binário basta substituir cada dígito hexadecimal por seu equivalente binário de quatro dígitos.

Page 9: cs-htp_app-b

Apêndice B Sistemas de Numeração B-9

• Como estamos acostumados a trabalhar em decimal, é conveniente converter um número binário, octal ou hexadecimal em decimal para ter uma idéia do valor “real” do número.

• Para converter um número em decimal de outra base multiplique o equivalente decimal de cada dígito por seu valor posicional e some esses produtos.

• Os computadores representam números negativos usando a notação de complemento de dois.

• Para formar o negativo de um valor em binário primeiro forme seu complemento de um aplicando o operador Xor (OU exclusivo) do Visual Basic. Isso inverte os bits do valor. Para formar o complemento de dois de um valor basta incluir um ao complemento de um do valor.

Terminologiabaseconversõesdígitonotação de complemento de doisnotação de complemento de umnotação posicionaloperador de complemento bit a bit (~)sistema de numeração base 2sistema de numeração base 8

sistema de numeração base 10sistema de numeração base 16sistema de numeração bináriosistema de numeração decimalsistema de numeração hexadecimalsistema de numeração octalvalor negativovalor posicionalvalor simbólico

Exercícios de auto-revisão

B.1 As bases dos sistemas de numeração decimal, binário, octal e hexadecimal são __________________, __________________, __________________ e __________________ , respectivamente.

B.2 Em geral, as representações decimal, octal e hexadecimal de determinado número binário contêm (mais/menos) dígitos do que o número binário contém.

B.3 (Verdadeiro/Falso) Um motivo conhecido para o uso do sistema de numeração decimal é que ele forma uma notação conveniente para abreviar os número binários pela simples substituição de um dígito decimal por grupo de quatro bits binários.

B.4 A representação (octal/hexadecimal/decimal) de um valor binário grande é a mais concisa (das alternativas fornecidas).

B.5 (Verdadeiro/Falso) O dígito mais alto de qualquer base é um a mais do que a base.

B.6 (Verdadeiro/Falso) O dígito mais baixo de qualquer base é um a menos do que a base.

B.7 O valor posicional do dígito mais à direita de qualquer número em binário, octal, decimal ou hexadecimal é sempre ______________.

B.8 O valor posicional do dígito à esquerda do dígito mais à direita de qualquer número em binário, octal, decimal ou hexadecimal é sempre igual a __________________.

B.9 Preencha os valores que faltam neste gráfi co de valores posicionais para as quatro posições mais à direita de cada um dos sistemas de numeração indicados:

decimal 1000 100 10 1hexadecimal ... 256 ... ...binário ... ... ... ...octal 512 ... 8 ...

B.10 Converta o valor binário 110101011000 em octal e hexadecimal.

B.11 Converta o valor hexadecimal FACE em binário.

B.12 Converta o valor octal 7316 em binário.

B.13 Converta o valor hexadecimal 4FEC em octal. (Dica: primeiro converta 4FEC em binário e, em seguida, converta esse número binário em octal.)

B.14 Converta o valor binário 1101110 em decimal.

B.15 Converta o valor octal 317 em decimal.

B.16 Converta o valor hexadecimal EFD4 em decimal.

Page 10: cs-htp_app-b

C# — Como ProgramarB-10

B.17 Converta o valor decimal 177 em binário, octal e hexadecimal.

B.18 Mostre a representação binária do decimal 417. Em seguida, mostre o complemento de um de 417 e o complemento de dois de 417.

B.19 Qual é o resultado quando o complemento de um de um número é somado a ele mesmo?

Respostas dos exercícios de auto-revisão

B.1 10, 2, 8, 16.

B.2 Menos.

B.3 Falso.

B.4 Hexadecimal.

B.5 Falso. O dígito mais alto de qualquer base é um a menos do que a base.

B.6 Falso. O dígito mais baixo de qualquer base é zero.

B.7 1 (a base elevada à potência de zero).

B.8 A base do sistema de numeração.

B.9 Preencha os valores que faltam neste gráfi co de valores posicionais para as quatro posições mais à direita de cada um dos sistemas indicados:

decimal 1000 100 10 1hexadecimal 4096 256 16 1binário 8 4 2 1octal 512 64 8 1

B.10 Octal 6530; hexadecimal D58.

B.11 Binário 1111 1010 1100 1110.

B.12 Binário 111 011 001 110.

B.13 Binário 0 100 111 111 101 100; octal 47754.

B.14 Decimal 2+4+8+32+64 = 110.

B.15 Decimal 7+1*8+3*64=7+8+192=207.

B.16 Decimal 4+13*16+15*256+14*4096=61396.

B.17 Decimal 177

em binário: 256 128 64 32 16 8 4 2 1 128 64 32 16 8 4 2 1 (1*128)+(0*64)+(1*32)+(1*16)+(0*8)+(0*4)+(0*2)+(1*1) 10110001

em octal: 512 64 8 1 64 8 1 (2*64)+(6*8)+(1*1) 261

em hexadecimal: 256 16 1 16 1 (11*16)+(1*1) (B*16)+(1*1) B1

B.18 Binário:

512 256 128 64 32 16 8 4 2 1 256 128 64 32 16 8 4 2 1

Page 11: cs-htp_app-b

Apêndice B Sistemas de Numeração B-11

(1*256)+(1*128)+(0*64)+(1*32)+(0*16)+(0*8)+(0*4)+(0*2)+(1*1) 110100001

Complemento de um: 001011110 Complemento de dois: 001011111 Verifi cação: o número binário original + seu complemento de dois

110100001 001011111 --------- 000000000

B.19 Zero.

Exercícios

B.20 Algumas pessoas argumentam que muitos de nossos cálculos seriam mais fáceis no sistema de numeração de base 12, porque 12 é divisível por tantos outros números além de 10 (para a base 10). Qual é o dígito mais baixo da base 12? Qual seria o símbolo mais alto para o dígito da base 12? Quais são os valores posicionais das quatro posições mais à direita de qualquer número do sistema de numeração da base 12?

B.21 Em que o valor simbólico mais alto dos sistemas de numeração que discutimos está relacionado ao valor posicional do primeiro dígito à esquerda do dígito mais à direita de qualquer número desses sistemas de numeração?

B.22 Complete este gráfi co de valores posicionais para as quatro posições mais à direita de cada um dos sistemas de numeração indicados:

decimal 1000 100 10 1base 6 ... ... 6 ...base 13 ... 169 ... ...base 3 27 ... ... ...

B.23 Converta o valor binário 100101111010 em octal e hexadecimal.

B.24 Converta o valor hexadecimal 3A7D em binário.

B.25 Converta o valor hexadecimal 765F em octal. (Dica: primeiro converta o valor 765F em binário e, em seguida, converta esse núme-ro binário em octal.)

B.26 Converta o valor binário 1011110 em decimal.

B.27 Converta o valor octal 426 em decimal.

B.28 Converta o valor hexadecimal FFFF em decimal.

B.29 Converta o valor decimal 299 em binário, em octal e em hexadecimal.

B.30 Mostre a representação binária do decimal 779. Em seguida, mostre o complemento de um de 779 e o complemento de dois de 779.

B.31 Qual é o resultado quando o complemento de dois de um número é somado a ele mesmo?

B.32 Mostre o complemento de dois do valor de inteiro –1 em uma máquina com inteiros de 32 bits.