Você está na página 1de 18

01/10/13

Curso de Lgica da Programao

Incio

Cursos

Blog

A Empresa

Contato

Curso de Lgica da Programao na Prtica.

Sistemas de Numerao.
No incio deste curso dissemos que computadores s entendem informaes em nmeros binrios, hexadecimais ou octais.
Agora teremos a oportunidade de conhecer mais a fundo esses sistemas de numerao, inclusive aprenderemos como realizada a converso entre eles. Alm dos nmeros decimais, binrios, hexadecimais e octais, tambm teremos uma introduo aos cdigos ASCII, que so uma padronizao para os caracteres dos teclados de computadores.

Nmeros decimais
Nmeros decimais so os que estamos acostumados a lidar na Matemtica convencional. Tambm so conhecidos como nmeros de base 10. Isso porque compreendem dez smbolos numricos: os nmeros 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9.
www.activeinfo.com.br/curso_programacao/sistemas_de_numeracao.html 1/18

01/10/13

Curso de Lgica da Programao

Atravs da combinao desses dez nmeros possvel representar todos os nmeros decimais. Quando um nmero decimal lido da direita para a esquerda, a primeira posio do mesmo representada pelo nmero 0 . A posio do prximo nmero da esquerda para a direita representada pelo nmero 1e assim por diante. Por exemplo, vejamos isso com o nmero 26802:

O sistema decimal baseado em potncias de 10. Levando em conta a figura acima que mostra como realizada a identificao da coluna do nmero, em um sistema decimal cada nmero definido pela soma de cada algarismo multiplicado por 10 elevado potncia correspondente coluna do mesmo:

www.activeinfo.com.br/curso_programacao/sistemas_de_numeracao.html

2/18

01/10/13

Curso de Lgica da Programao

Agora que vimos uma tabela detalhando como funcionam os nmeros decimais, vejamos mais alguns exemplos:

E assim por diante...

Nmeros binrios.
Nmeros binrios so os mais importantes em computao. Quando falamos que computadores atuais so digitais, significa que processam os dados no formato binrio. Nmeros binrios tambm so conhecidos como nmeros de base 2. Compreendem somente dois caracteres: o 0 e o 1. Quando um nmero binrio lido da direita para a esquerda, assim como
www.activeinfo.com.br/curso_programacao/sistemas_de_numeracao.html 3/18

01/10/13

Curso de Lgica da Programao

com os nmeros decimais, sua posio colunar inicial considerada

0 .O

prximo dgito mais esquerda considerado de posio 1e assim por diante, como na figura:

Os nmeros binrios so baseados em potncias de 2 e, de forma semelhante aos nmeros decimais, podem ser definidos pela soma de cada algarismo multiplicado por 2 (que a sua base) elevado potncia que corresponde coluna correspondente do mesmo:

Para ficar bem claro, seguem mais alguns exemplos:

www.activeinfo.com.br/curso_programacao/sistemas_de_numeracao.html

4/18

01/10/13

Curso de Lgica da Programao

Cada dgito de um nmero binrio conhecido como

b i t . Nos exemplos da

figura acima temos um nmero binrio de 4 bits. Para mensurar a capacidade de processamento de um computador assim como a capacidade de armazenamento utilizado o conceito de

b y t e

(representado pela letra B maiscula). Um byte equivale a aproximadamente 8 bits e representado pela letra b minscula. Um

b i tpode ser

representado somente por duas entidades: ou um dgito 0 ou um dgito 1. Um caracter digitado no teclado tem, aproximadamente, 8 bits. Quando falamos que um byte equivale a aproximadamente 8 bits, estamos tratando da mensurao dos bytes que temos contato no dia-a-dia. Por exemplo, vejamos uma tabela que relaciona bits e bytes:
byte (B) 1 byte 1 kB 1 MB Correspondncia em bytes Correspondncia em bits

bit (b)

Potncia

1 byte

8 bits

8 bits

20

1.024 bytes 1.048.576 bytes

8 kb 8.192 kb

8.192 bits 8.388.608 bits

2 10 2 20
5/18

www.activeinfo.com.br/curso_programacao/sistemas_de_numeracao.html

01/10/13

Curso de Lgica da Programao

1 GB

1.073.741.824 bytes

8.388.608 kb

8.589.934.592 bits

2 30

1 TB

1.099.511.627.776 8.589.934.592 8.796.093.022.208 bytes kb bits

2 40

fcil de constatar isso no irb:

Tambm possvel verificar a multiplicao de bytes por 8 para achar o valor em bits:

No teste acima no precisamos dos parnteses pois o operador de exponenciao tem maior precedncia
www.activeinfo.com.br/curso_programacao/sistemas_de_numeracao.html 6/18

01/10/13

Curso de Lgica da Programao

que o operador de multiplicao.

Tabela ASCII
Os caracteres que digitamos no teclado, indiferentemente se so letras ou nmeros, primeiro so convertidos em um cdigo chamado ASCII que corresponde a um nmero inteiro decimal. Em seguida so convertidos em nmeros binrios, compostos somente por "zeros" e "uns". Dessa forma o processador pode realizar os clculos e retornar um valor. ASCII um acrnimo para American Standard Code for Information Interchange, que em portugus significa "Cdigo Padro Americano para o Intercmbio de Informao". Define 128 caracteres, sendo 33 no imprimveis (utilizados como caracteres de controle). Os caracteres no imprimveis vo do 1 ao 31, alm do 128. Ou seja, os caracteres imprimveis vo do 32 ao 126. Lembra-se quando vimos os caracteres de "escape"? Vimos, por exemplo, o

" \ t " . Esses caracteres fazem parte dos


caracteres de controle da tabela ASCII. O " \ t " o caracter 9 na tabela ASCII, e um caracter considerado de controle, no imprimvel. Voc pode encontrar centenas de sites na internet que mostram a tabela ASCII completa. Mas, que tal verificarmos o cdigo ASCII de um caracter no Ruby? fcil, veja:
www.activeinfo.com.br/curso_programacao/sistemas_de_numeracao.html 7/18

01/10/13

Curso de Lgica da Programao

Nesse teste simples, a String "abcde" foi atribuda varivel s t r . Em seguida, foi chamada a varivel informando um ndice da String, que comea em 0 da esquerda para a direita. Dessa forma, atravs do mtodo

o r d

mostrado o cdigo ASCII correspondente primeira letra da esquerda para a direita, ou seja, o a . O cdigo da posio 1 referente letra por diante. O contrrio tambm possvel, graas ao mtodo . c h r :

be assim

www.activeinfo.com.br/curso_programacao/sistemas_de_numeracao.html

8/18

01/10/13

Curso de Lgica da Programao

Hum... com os conhecimentos que j temos de loops, podemos fazer um programa que mostre os caracteres e seu cdigo ASCII correspondente. Acho que um desafio interessante. Os caracteres ASCII imprimveis comeam no 32 e vo at o 126. Vejamos como seria um programa bem simples que mostra os caracteres e seu cdigo ASCII:
#e n c o d i n g :i s o 8 8 5 9 1 f o ra s c i ii n3 2 . . 1 2 6d o p u t s" Oc d i g oA S C I Id oc a r a c t e r# { a s c i i . c h r } :# { a s c i i } " e n d

No programa acima utilizamos um loop for que atravessa um range de valores que vai de 32 at 126. Dentro do loop utilizada a interpolao para mostrar o resultado, primeiro utilizando o mtodo chr e depois a varivel que contm o nmero da vez. Testando o programa:

www.activeinfo.com.br/curso_programacao/sistemas_de_numeracao.html

9/18

01/10/13

Curso de Lgica da Programao

#e n c o d i n g :i s o 8 8 5 9 1 f o ra s c i ii n3 2 . . 1 2 6d o p u t s" Oc d i g oA S C I Id oc a r a c t e r# { a s c i i . c h r } :# { a s c i i } " e n d

Uau! muito mais legal do que ficar fazendo tabelas com cdigos ASCII!

Cdigo ASCII de caracteres em Java


Tambm possvel encontrar facilmente o cdigo ASCII de caracteres em Java.
www.activeinfo.com.br/curso_programacao/sistemas_de_numeracao.html 10/18

01/10/13

Curso de Lgica da Programao

Vejamos este pequeno programa:


p u b l i cc l a s sM o s t r a A s c i i{

p u b l i cs t a t i cv o i dm a i n( S t r i n g [ ]a r g s ){ S t r i n gn o m e=" M a r c o s " ; f o r( i n ti=0 ;i<n o m e . l e n g t h ( ) ;i + + ){ i n ta s c i i=( i n t ) n o m e . c h a r A t ( i ) ; c h a rl e t r a=n o m e . c h a r A t ( i ) ; S y s t e m . o u t . p r i n t l n ( " C d i g oA S C I Id al e t r a"+l e t r a+"="+a s c i i ) ; } }

Testando o mesmo:

Agora ao contrrio, convertendo de ASCII em String:

www.activeinfo.com.br/curso_programacao/sistemas_de_numeracao.html

11/18

01/10/13

Curso de Lgica da Programao

p u b l i cc l a s sA s c i i C h a r{

p u b l i cs t a t i cv o i dm a i n( S t r i n g [ ]a r g s ){ i n t [ ]n u m e r o s={ 9 8 ,9 9 ,1 0 0 ,1 0 1 ,1 0 2 ,1 0 3 } ; f o r( i n ti=0 ;i<n u m e r o s . l e n g t h ;i + + ){ c h a rc a r a c t e r=( c h a r ) n u m e r o s [ i ] ;

S y s t e m . o u t . p r i n t l n ( " C a r a c t e rA S C I Id on m e r o"+n u m e r o s [ i ]+"="+c a r a c } }

Testando o programa:

Mostrando toda a tabela ASCII com todos os caracteres imprimveis:

www.activeinfo.com.br/curso_programacao/sistemas_de_numeracao.html

12/18

01/10/13

Curso de Lgica da Programao

p u b l i cc l a s sT a b e l a A s c i i{

p u b l i cs t a t i cv o i dm a i n( S t r i n g [ ]a r g s ){ f o r( i n ti=3 2 ;i< =1 2 6 ;i + + ){ c h a rc a r a c t e r=( c h a r ) i ; S y s t e m . o u t . p r i n t l n ( " C a r a c t e rA S C I Id on m e r o"+i+"="+c a r a c t e r ) } }

Note que no programa acima, dentro das condies do loop for, a varivel de controle foi inicializada em 32, para que fossem mostrados somente os caracteres imprimveis, e terminando em 126, que o ltimo caracter imprimvel. Compilando e rodando o programa:

Ok, j conhecemos os nmeros decimais e binrios, j sabemos mensurar bytes e bits e conhecemos um pouco da tabela ASCII.

Nmeros Hexadecimais
Os nmeros hexadecimais so conhecidos como de base 16 e so
www.activeinfo.com.br/curso_programacao/sistemas_de_numeracao.html 13/18

01/10/13

Curso de Lgica da Programao

utilizados na programao de microprocessadores. Oferecem uma forma mais legvel para leitura, e, por isso, so muito utilizados em programao de baixo nvel, por proporcionar uma facilidade em converter um nmero binrio de 4 bits. Utilizam-se de dezesseis algarismos, ou

1 ,2 ,3 ,4 ,5 ,6 , 7 ,8 ,9 ,1 0 ,A ,B ,C ,D , Ee F .
dgitos hexadecimais: Os nmeros hexadecimais tm a capacidade de reduzir uma longa sequncia de nmeros binrios em poucos caracteres, pois qualquer combinao de nmeros binrios de 4 dgitos pode ser representada por um nico smbolo hexadecimal. Vejamos uma tabela que compara nmeros decimais, binrios e hexadecimais para realizarmos uma comparao:
Decimal 0 1 2 3 4 5 6 7 8 9 Binrio 0 1 10 11 100 101 110 111 1000 1001 Hexadecimal 0 1 2 3 4 5 6 7 8 9

www.activeinfo.com.br/curso_programacao/sistemas_de_numeracao.html

14/18

01/10/13

Curso de Lgica da Programao

10 11 12 13 14 15

1010 1011 1100 1101 1110 1111

A B C D E F

Vejamos uma figura que ilustra a utilizao da base 16 em um nmero hexadecimal:

Note que o dgito "C" do nmero hexadecimal foi substitudo pelo seu correspondente (12) na tabela acima.

Nmeros Octais
Tambm conhecido como sistema numrico de base 8, pois utiliza 8 smbolos numricos para sua representao: 1 ,2 ,3 ,4 ,5 ,6 , 7e

8 .

Foi muito utilizada em computao para representar de forma mais suscinta nmeros binrios, mas os nmeros hexadecimais so mais utilizados para
www.activeinfo.com.br/curso_programacao/sistemas_de_numeracao.html 15/18

01/10/13

Curso de Lgica da Programao

esta finalidade nos dias de hoje. Similar aos nmeros decimais e binrios, utiliza a posio colunar como elemento para determinao do expoente. Dessa forma, um nmero octal segue normas parecidas com os nmeros decimais e binrios no que se refere exponenciao:

Vejamos uma tabela comparativa entre Decimais, Binrios, Hexadecimais e Octais:


Decimal 0 1 2 3 4 5 6 Binrio 0 1 10 11 100 101 110 Hexadecimal 0 1 2 3 4 5 6 Octal 0 1 2 3 4 5 6

www.activeinfo.com.br/curso_programacao/sistemas_de_numeracao.html

16/18

01/10/13

Curso de Lgica da Programao

7 8 9 10 11 12 13 14 15

111 1000 1001 1010 1011 1100 1101 1110 1111

7 8 9 A B C D E F

7 10 11 12 13 14 15 16 17

Na prxima lio vamos aprender a converter nmeros decimais em binrios e vice-versa:

Voltar Prximo: Converso Entre Bases Numricas.

Lies
Captulo 1 Captulo 2 Captulo 3 Captulo 4 Captulo 5 Captulo 6 Captulo 7
Registros (Arquivos) Mtodos (Funes) Algoritmos com Mtodos
www.activeinfo.com.br/curso_programacao/sistemas_de_numeracao.html 17/18

01/10/13

Curso de Lgica da Programao

Recursividade Sistemas de Numerao Converso Entre Bases Numricas IP Decimal para Binrio IP Binrio para Decimal
De se nvolvido por:

Marcos Cesar Kossoski

www.activeinfo.com.br/curso_programacao/sistemas_de_numeracao.html

18/18

Você também pode gostar