FISP 1/11 AULA 10 REPRESENTAÇÃO NUMÉRICA O conceito de bit binary digit bit Um bit representa a menor parte de uma informação, que pode ser armazenada na memória do computador. Um bit pode assumir apenas um dos dois seguintes valores: 1 (um) ligado 0 (zero) desligado Portanto, a menor unidade física da memória, guarda um bit 1 ou um bit 0. A memória do computador armazena os bits em seqüências ou cadeias. Conforme e a tecnologia usada no computador e sua capacidade, os bits podem ser organizados em grupos de 8, 16, 32 ou 64. Cada um desses grupos recebe o nome de palavra ou word. Palavra e Byte Byte é o nome técnico dado a um conjunto ou seqüência de 8 bits. Cada byte é o espaço de memória necessário para armazenar um caracter (letra, algarismo ou símbolo). Portanto, cada palavra ou word é formada por um grupo de 2, 4, 6 ou até 8 bytes. Para que serve o Byte Para representar, na memória do computador, os símbolos de nossa linguagem. Com 8 bits (= 1 byte) podemos representar cerca de 256 (= 2 8 símbolos) diferentes, pois estaríamos combinando 8 casas, nas quais podem conter um 0 ou um 1 Exemplos: 00101001 poderia ser a representação de A, 00101010 poderia ser B, e assim por diante. Múltiplos do Byte quilobyte 1 kb = 1.024 bytes (= 2 10 bytes) em 1 kb cabem cerca de 1024 letras ou símbolos.
FISP 2/11 megabyte 1 MB = 1.048.576 bytes (= 2 20 bytes) gigabyte 1 GB = 1.073.741.824 (= 2 30 bytes) terabyte 2 40 bytes pentabyte 2 50 bytes Representação de Caracteres Alfanuméricos Usa-se um byte para representar um caracter, algarismo ou símbolo especial. Os códigos mais usados são o ASCII e o EBCDIC. Ambos os códigos usam uma seqüência diferente de 8 bits para representar cada caracter. Os Sistemas de Numeração Sistema Decimal Utiliza 10 algarismos combinados, com ou sem repetição. 0,1,2,3,4,5,6,7,8 e 9. Exemplos: (243) 10, (1279) 10, (49875) 10, (6838380) 10 (243) 10 leia-se: (dois, quatro, três na base decimal) ou (duzentos, quarenta e três) simplesmente. Sistema Binário Utiliza apenas dois algarismos: 0 e 1. Exemplos: (101) 2, (11101010) 2, (1110111) 2 (101) 2 leia-se: (um, zero, um na base binária) E não (cento e um), pois somente pode ser dita na base decimal. Sistema Octal Utiliza 8 algarismos combinados, com ou sem repetição. 0,1,2,3,4,5,6 e 7. Exemplos: (243) 8, (1270) 8, (40175) 8, (62330) 8 (243) 8 leia-se: (dois, quatro, três na base octal) E não (duzentos, quarenta e três), pois somente pode ser dita na base decimal.
FISP 3/11 Sistema Hexadecimal Utiliza 16 algarismos: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E e F. Exemplos: (23A) 16, (C0E4) 16, (2569) 16, (E32B) 16 (23A) 16 leia-se: (dois, três, a na base hexadecimal) E não (vinte e três a). Aritmética de números binários Adição _ Regras básicas: 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 e vai 1 portanto será igual 10 (leia-se um zero) _ Exemplo: 1 1 1 1 1 1 1 1 1 0 0 1 1 + 0 1 0 1 1 1 0 1 0 1 0 0 0 0 1 10 vai um Subtração _ Regras básicas: 0-0 = 0 1-0 = 1 1-1 = 0 0-1 = 1 e desce 1 (ou empresta 1) _ Exemplo: Multiplicação _ Regras básicas: 0 x 0 = 0 1 x 0 = 0 0 x 1 = 0 1 x 1 = 1 _ Exemplo: -1-1 Empresta um 1 0 1 1 1 0 1-0 0 1 0 1 1 0 1 0 0 0 1 1 1
FISP 4/11 Divisão _ Regras básicas: 0 1 = 0 1 1 = 1 1 0 1 0 1 1 x 1 0 1 1 0 1 0 1 1 1 0 1 0 1 1 + 1 1 0 1 0 1 1 1 _ Exemplo: 1 1 0 1 0 1 1 0 1-1 0 1 1 0 1 0 resultado 0 0 1 1 0-1 0 1 0 1 1 resto Conversão de base 1 algarismo octal é a representação de um conjunto 3 bits binário (3 bits) octal Equivalente em decimal 000 0 0 001 1 1 010 2 2 011 3 3 100 4 4 101 5 5 110 6 6 111 7 7
FISP 5/11 1 algarismo hexadecimal é a representação de um conjunto de 4 bits binário (4 bits) hexadecimal Equivalente em decimal 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 8 1001 9 9 1010 A 10 1011 B 11 1100 C 12 1101 D 13 1110 E 14 1111 F 15 Conversões entre Sistemas de Numeração Conversão Decimal Binário Exemplo: Converter 67 10 para binário. 67 2 1 33 2 1 16 2 0 8 2 0 4 2 1000011 0 2 2 0 1 2 1 0 Resultado: (1000011) 2 O número binário correspondente é a seqüência de algarismos presentes nos restos das divisões.
FISP 6/11 Conversão Decimal Octal Exemplo: Converter 67 10 para octal. 67 8 3 8 8 0 1 8 1 0 103 Resultado: (103) 8 O número octal correspondente é a seqüência de algarismos presentes nos restos das divisões. Conversão Decimal Hexadecimal Exemplo: Converter 67 10 para hexadecimal. 67 16 3 4 16 4 0 43 Resultado: (43) 16 O número hexadecimal correspondente é a seqüência de algarismos presentes nos restos das divisões. Conversão Binário Decimal Exemplo: Converter (1000011) 2 para decimal 1 0 0 0 0 1 1 1 x 2 0 = 1 1 x 2 1 = 2 + 1 x 2 6 = 64 67 10
FISP 7/11 Conversão Octal Decimal Exemplo: Converter (103) 8 para decimal 1 0 3 3 x 8 0 = 3 0 x 8 1 = 0 + Conversão Hexadecimal Decimal Exemplo: Converter (43) 16 para decimal 4 3 Conversão Binário Hexadecimal 1 x 8 2 = 64 67 10 3 x 16 0 = 3 Exemplo: Converter (1000011) 2 para hexadecimal Usar tabela de Conversão de base 4 x 16 1 = 64 + 67 10 1 0 0 0 0 1 1 4 3 RESULTADO: 43 16
FISP 8/11 Conversão Hexadecimal Binário Exemplo: Converter (43) 16 para binário Usar tabela de Conversão de base 4 3 0100 0011 RESULTADO: 1000011 2 Conversão Binário Octal Exemplo: Converter (1000011) 2 para octal Usar tabela de Conversão de base 1 0 0 0 0 1 1 RESULTADO: 103 8 1 0 3 Conversão Octal Binário Exemplo: Converter (103) 8 para binário Usar tabela de Conversão de base 1 0 3 001 000 011 RESULTADO: 1000011 2
FISP 9/11 Conversão Hexadecimal Octal Exemplo: Converter (43) 16 para octal Usar tabela de Conversão de base 4 3 0100 0011 01000011 1 0 3 RESULTADO: 103 8 Conversão Octal Hexadecimal Exemplo: Converter (103) 8 para hexadecimal Usar tabela Conversão de base 1 0 3 001 000 011 001000011 4 3 RESULTADO: 43 16
FISP 10/11 EXEMPLOS DE REPRESENTAÇÃO NUMÉRICA EM LIGUAGEM C // programa com exemplo de operacoes com numeros decimal, octal e hexadecimal // representacao de hexadecimal em linguagem C - "0x"+(numero hexa) // representacao de octal em linguagem C - "0"+(numero octal) // não existe representação de binário em linguagem C #include <iostream.h> #include <stdlib.h> #include <stdio.h> int c,c1,c2,c3; int main() { c1=0xf+0x1 ; // operacao com hexa c2=017+077 ; / operacao com octal c3=0xff+188+077 ; // operacao de hexa + decimal + octal printf(" hexadecimal --> decimal %d \n",c1); printf(" hexadecimal --> hexadecimal %X \n",c1); printf(" hexadecimal --> octal %o \n",c1); printf(" octal --> decimal %d \n",c2); printf(" octal --> hexadecimal %X \n",c2); printf(" octal --> octal %o \n",c2); printf(" misto --> decimal %d \n",c3); printf(" misto --> hexadecimal %X \n",c3); printf(" misto --> octal %o \n",c3); system("pause"); return 0; } OUTPUT hexadecimal --> decimal 16 hexadecimal --> hexadecimal 10 hexadecimal --> octal 20 octal --> decimal 78 octal --> hexadecimal 4E octal --> octal 116 misto --> decimal 506 misto --> hexadecimal 1FA misto --> octal 772 Pressione qualquer tecla para continuar...
FISP 11/11 #include<stdio.h> #include<stdlib.h> #include<math.h> int nd,nb,no,nh; int main() { printf("\ndigite um numero inteiro decimal positivo:"); scanf("%d",&nd); printf("\n decimal=%d octal=%o hexadecimal=%x \n ",nd,nd,nd); printf("\ndigite um numero inteiro octal positivo:"); scanf("%o",&no); printf("\n decimal=%d octal=%o hexadecimal=%x \n ",no,no,no); printf("\ndigite um numero inteiro hexadecimal positivo:"); scanf("%x",&nh); printf("\n decimal=%d octal=%o hexadecimal=%x \n ",nh,nh,nh); printf("\nresultado da soma de:"); printf("\n numero inteiro decimal positivo %d",nd); printf("\n numero inteiro octal positivo %o",no); printf("\n numero inteiro hexadecimal positivo %X",nh); printf("\n decimal=%d octal=%o hexadecimal=%x ",nd+no+nh,nd+no+nh,nd+no+nh); printf("\n\n"); //Operacao de soma interna de numeros inteiros de bases diferentes printf("\nsoma de um decimal(10)+octal(010)+hexadecimal(0x10):%d \n ",10+010+0x10); printf("\nsoma de um decimal(22)+octal(022)+hexadecimal(0x22):%d \n ",22+022+0x22); printf("\nsoma de um decimal(100)+octal(0100)+hexadecimal(0x100):%d",100+0100+0x100); printf("\n\n"); system ("PAUSE"); return 0; } OUTPUT Digite um numero inteiro decimal positivo:198 decimal=198 octal=306 hexadecimal=c6 Digite um numero inteiro octal positivo:577 decimal=383 octal=577 hexadecimal=17f Digite um numero inteiro hexadecimal positivo:1af decimal=431 octal=657 hexadecimal=1af Resultado da soma de: numero inteiro decimal positivo 198 numero inteiro octal positivo 577 numero inteiro hexadecimal positivo 1AF decimal=1012 octal=1764 hexadecimal=3f4 Soma de um decimal(10)+octal(010)+hexadecimal(0x10):34 Soma de um decimal(22)+octal(022)+hexadecimal(0x22):74 Soma de um decimal(100)+octal(0100)+hexadecimal(0x100):420 Pressione qualquer tecla para continuar...