Cursos: Análise, Ciência da Computação e Sistemas de Informação Laboratório I - Prof. Aníbal Notas de aula 2 SISTEMAS NUMÉRICOS

Documentos relacionados
Sistemas de Numeração

Conversão de Bases. Introdução à Organização de Computadores 5ª Edição/2007 Página 54. Sistemas Numéricos - Aritmética. Prof.

Sistemas Numéricos, Operações Lógicas e Tipos de Dados Tratados pelo Computador

Binário Decimal

Sistemas de Numeração. Tiago Alves de Oliveira

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2

Sistemas Numéricos - Aritmética. Conversão de Bases. Prof. Celso Candido ADS / REDES / ENGENHARIA

Prof. Leandro Tonietto Introdução a computação e suas aplicações Curso de Segurança da Informação UNISINOS jun-09

Sistemas de Numeração. Exemplos de Sistemas de Numeração (1) Exemplos de Sistemas de Numeração (2) Sistemas de Numeração

Introdução à Computação MAC0110

Arquitetura de computadores BASE NUMÉRICAS

ELETRÔNICA DIGITAL Aula 1- Sistemas de Numeração. Prof.ª Msc. Patricia Pedroso Estevam Ribeiro

Expressões lógicas, expressões condicionais, prioridades e operadores, base binária, operadores de bits

SISTEMAS DE NUMERAÇÃO. Introdução à Ciência da Computação ICC0001

S is temas numéricos e a Repres entação Interna dos Dados no Computador

Sistemas de Numeração

Lógica Matemática Elementos de Lógica Digital. Sistema de numeração 09/08/2016 1

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Introdução à Computação Prof. André Luís Belini

SISTEMAS DE NUMERAÇÃO

Princípios de Desenvolvimento de Algoritmos MAC122

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4

Números são números, letras são números e sinais de pontuação, símbolos e até mesmo as instruções do próprio computador são números.

Alex Maycon da Silva

Sistemas numéricos Arquitetura e Organização de Computadores Curso de Análise e Desenvolvimento de Sistemas

SSC512 Elementos de Lógica Digital. Sistemas de Numeração. GE4 Bio

Organização de Computadores I

Operações com números binários

Disciplina: Introdução à Engenharia da Computação

Prof. Leonardo Augusto Casillo

Sistemas de Numeração

Sistemas de numeração

1/50. Conceitos Básicos. Programa Básico

Fundamentos de Programação

Aula 2 - Sistemas de Numeração

Circuitos Digitais. Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional

Sistemas de Computação

Programação Orientada a Objetos II Java Segunda aula. Prof. Rogério Albuquerque de Almeida

Sistemas de Numeração

EXPRESSÕES ARITMÉTICAS

Arquitetura de Computadores

CAPÍTULO 1 - SISTEMAS DE NUMERAÇÕES

Sistemas de Numeração. Sistemas Decimal, Binário e Hexadecimal.

MAT115 Introdução ao Processamento de Dados Professor: Ibirisol Fontes Ferreira DCC: Departamento de Ciência da Computação

ALB - Álgebra de Boole Aula 2 Sistemas Numéricos. Prof. Antonio Heronaldo de Sousa (Heron)

SISTEMA DE NUMERAÇÃO. Introdução a Informática. Vinícius Pádua

Disciplina: Introdução à Engenharia da Computação

EXPRESSÕES BOOLEANAS. Ex: boolean b = false; // declara uma variável do tipo boolean e atribui false

Base: número de símbolos empregados no sistema numérico.

Sistemas Digitais. Prof. Valbério Gonzaga

Circuitos Lógicos Aula 22

3. Linguagem de Programação C

Representação da Informação no Computador

ARQUITETURA DE COMPUTADORES

Técnico em Eletrônica Módulo I Eletrônica Digital (ED) - Prof. Samuel M. B. Cavalcante

Introdução à Ciência da Computação. Aula 04 Carlos André Guerra Fonseca

Engenharia Civil. Representação da Informação. Introdução à Computação

Sistemas de Computação. Sistemas de numeração

Computação e Programação

FACULDADE PITÁGORAS PRONATEC

Matemática para Ciência de Computadores

Circuitos Lógicos. Prof. Odilson Tadeu Valle

Conversões numéricas de base. Organização de Computadores

Prof. Leonardo Augusto Casillo

Introdução. Universidade Federal de Campina Grande. A Informação e sua Representação (Parte I) Centro de Engenharia Elétrica e Informática

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Aula Teórica 8. Preparado por eng.tatiana Kovalenko

Sistemas de Numeração.

Nota-se que um número é expresso como uma soma de potências de 10 multiplicando por coeficientes apropriados.

Aula 2 - Sistemas de Numeração

LINGUAGEM C: VARIÁVEIS E EXPRESSÕES

Sistemas de numeração

SISTEMAS DE NUMERAÇÃO CONVERSÕES ENTRE BASES. Prof. André Rabelo

Introdução à Computação: Sistemas de Numeração

X. B Y Base do sistema de numeração Dígito do número em questão

4 Variáveis. Unesp Campus de Guaratinguetá

Paradigmas de Linguagens

Para essa conversão utiliza-se o valor posicional

Informática I. Aula 6. Aula 6-18/09/2006 1

Representação de Dados (inteiros com sinal)

SISTEMAS DE NUMERAÇÃO

Baseado nos slides de Anna Tostes SISTEMA NUMÉRICO

Representação de Dados

Um sistema de numeração posicional utiliza um conjunto de símbolos. O valor que cada

Sistemas de numeração: Decimal, Binário, Octal e Hexadecimal

Variáveis primitivas e Controle de fluxo

2. Conversões de base

Introdução a JAVA. Variaveis, tipos, expressões, comandos e blocos

Instituto Federal de Educação, Ciência e Tecnologia de Santa Catarina - Campus São José. Prof. Glauco Cardozo.

SEBENTA de Sistemas de Numeração

1 x 10 3 = x 10 2 = x 10 1 = x 10 0 = 8 + Total

Introdução à Computação

Estrutura de Dados Conceitos Iniciais

INTRODUÇÃO À LINGUAGEM C

PROGRAMAS BÁSICOS EM C++ Disciplina: Introdução à Ciência da Computação Prof. Modesto Antonio Chaves Universidade estadual do Sudoeste da Bahia

Fundamentos de TI. Aula08_Sistemas Numéricos.doc 1

MANUTENÇÃO DE COMPUTADORES SISTEMAS NUMÉRICOS

Elementos Básicos. C# - Elementos básicos. Primeiro programa Tipos de dados Variáveis Constantes Expressões e operadores Controlo de fluxo Tabelas

Transcrição:

Cursos: Análise, Ciência da Computação e Sistemas de Informação Laboratório I - Prof. Aníbal Notas de aula 2 SISTEMAS NUMÉRICOS Para entender como o computador armazena as informações, é importante conhecer os sistemas de numeração binário, octal e hexadecimal. Sistema decimal É o sistema de numeração que usamos normalmente e no qual escrevemos os valores numéricos em nossos programas. É dito de base e possui dígitos (,, 2,... 8, 9). Cada um desses símbolos tem um valor intrínseco e um valor posicional. O valor posicional é uma potência de que corresponde à posição que o dígito ocupa dentro de um número. Por exemplo, dado o número 4232, o 2 da casa das centenas vale 2 x 2 = 2 x = 2; já o 2 da casa das unidades vale 2 x = 2 x = 2. Ambos têm o mesmo valor intrínseco (2), mas têm valores posicionais diferentes. Assim, 4232 = 4 x 3 + 2 x 2 + 3 x + 2 x = 4 x + 2 x + 3 x + 2 x = 4 + 2 + 3 + 2. Resumindo, os valores posicionais dos dígitos de um número, da direita para a esquerda, são, respectivamente, as pontências de dez:,, 2, 3, e assim por diante, ou seja,,,, etc. Sistema binário É o sistema de base 2, possuindo apenas dois dígitos: e. Devido a sua simplicidade, é o sistema usado internamente pelos computadores para processamento e armazenamento das informações. Como no sistema decimal, cada dígito possui seu valor intrínseco (por exemplo o vale zero ou falso ou desligado; o vale um, ou verdadeiro ou ligado), mas terá valor posicional que depende de sua localização dentro do número. No número binário, o da extremidade esquerda tem valor 4 = x2 2, enquanto o da extremidade direita tem valor = x 2. Então, o número binário = x 2 2 + x 2 + x 2 = x 4 + x 2 + x = 4 + + = 5. Os valores posicionais dos dígitos dentro de um número binário são, da direita para a esquerda, as potências de 2: 2, 2, 2 2, 2 3,, 2 4, etc., isto é,, 2, 4, 8, 6, e assim por diante. Conversão de binário para decimal O que acabamos de mostrar no item anterior é a própria maneira de calcular o valor decimal de um certo número binário. Basta multiplicar cada dígito binário pelo seu valor posicional e somar estes produtos. Ex: qual o valor decimal de? = x 2 5 + x 2 4 + x 2 3 + x 2 2 + x 2 + x 2 = 32 + 6 + 2 = 5 Conversão de decimal para binário Deve-se fazer uma série de divisões inteiras por 2 (aquela que dá um quociente e um resto). Divide-se o número decimal original por 2 e guarda-se o resto; divide-se o quociente da divisão anterior por 2 e guarda-se o resto. Assim procedemos repetidamente, até que o quociente dê zero. O número binário é a seqüência dos restos, na ordem inversa a da sua obtenção. Exemplo: converter o decimal 53 para binário; 53 / 2 = 26, resto 26 / 2 = 3, resto 3 / 2 = 6, resto 6 / 2 = 3, resto 3 / 2 =, resto / 2 =, resto Tomando os restos na ordem inversa, temos. Programação I - Prof. Aníbal - Notas de aula 2

Exercício. Tire a prova, para verificar a correção do resultado. Como você deve lembrar, para tirar a prova faz-se a operação inversa. Sistemas octal e hexadecimal Os números binários são em geral muito extensos. Por exemplo, o valor decimal 25 gastará 7 dígitos binários para a sua escrita:. Os sistemas de numeração octal (de base 8) e hexadecimal (de base 6) se prestam à abreviação de números binários. O sistema octal dispões de 8 dígitos (,, 2, 3, 4, 5, 6 e 7). O sistema hexadecimal utiliza 6 símbolos neste caso, usam-se os dígitos do sistema decimal, mais 6 letras do início do alfabeto (,, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F). Portanto, em hexadecimal, A tem valor intrínseco de, B vale, C vale 2, D vale 3, E vale 4 e o F vale 5. Os valores posicionais do sistema octal são as potências de 8 e do hexadecimal são as potências de 6. Exemplos: O número octal 52 = 5 x 8 2 + x 8 + 2 x 8 = 5 x 64 + x 8 + 2 x = 32 + 2 = 322. O número hexadecimal 3BF = 3 x 6 2 + x 6 + 5 x 6 = 256 + 76 + 5 = 447. Conversão de octal ou hexadecimal para decimal É o processo que acabamos de demonstrar nos dois últimos exemplos, isto é, multiplica-se cada dígito octal ou hexadecimal pelo seu valor posicional e somam-se estes produtos. O resultado é o valor decimal correspondente. Conversão de decimal para octal ou para hexadecimal Aplica-se o mesmo método de divisões sucessivas visto para a conversão de decimal para binário, apenas mudando o divisor de 2 para 8 ou 6, respectivamente. Exemplos: Converter o valor decimal 527 para octal e hexadecimal. 527 / 8 = 65, resto 7 65 / 8 = 8, resto 8 / 8 =, resto / 8 =, resto Tomando os restos na ordem inversa, temos: 7 que é a notação octal do decimal 527. Logo, o resultado é 2F. 527 / 6 = 32, resto 5 = F 32 / 6 = 2, resto 2 / 6 =, resto 2 Programação I - Prof. Aníbal - Notas de aula 2 2

Conversão de binário para octal ou para hexadecimal Aqui é útil usar uma tabela de equivalências dos quatro sistemas usados neste texto: Decimal Binário Octal Hexadecimal 2 3 4 5 6 7 8 9 2 3 4 5 6 2 3 4 5 6 7 2 3 4 5 6 7 2 2 3 4 5 6 7 8 9 A B C D E F Para converter um número binário em octal, divide-se a notação binária em grupos de 3 dígitos binários cada e substitui-se cada grupo pelo seu valor octal correspondente. Exemplo: converter o binário em octal. Inicialmente, separamos o valor dado em grupos de 3 dígitos (completando-se com zeros o grupo mais da esquerda, se necessário): Octal: 7 4 5 Para converter para hexadecimal, apenas muda-se o tamanho de cada grupo para 4 dígitos. Hexadecimal 3 E 5 Logo, o binário vale 745 em octal e 3E5 em hexadecimal. Conversão de octal ou hexadecimal para binário Cada símbolo octal deve ser substituído pelo conjunto de 3 dígitos binários que o representa. Cada símbolo hexadecimal deve ser substituído pelo conjunto de 4 binários que o representa. Exemplo: Converter o octal 57 para binário. 5 7 Exemplo: Qual a notação em binário do hexadecimal CA? C A Java permite representar uma constante inteira em octal, hexadecimal ou decimal. O início da constante determina a base: indica um octal, x ou X indica um hexadecimal. A representação decimal não tem nenhum prefixo. Por exemplo, 43, x2b e 53 representam o mesmo valor inteiro 43. Os comando System.out.printf("%o",5); e System.out.printf("%X",5); imprimem o valor do decimal 5 em octal e em hexadecimal, respectivamente. O método printf proporciona Programação I - Prof. Aníbal - Notas de aula 2 3

vários recursos do fluxo de saída neste caso, serve também para converter um decimal em octal ou em hexadecimal. Bit e Byte NOÇÕES DE ARMAZENAMENTO DE INFORMAÇÕES Bit é abreviatura de binary digit. Corresponde à menor informação que podemos armazenar no computador ( ou ). Todavia, como vimos, a representação binária é extensa. Logo, em um bit o máximo que podemos armazenar é o valor ou o valor. Devido a isso, foi criada uma nova unidade composta de 8 bits, chamada byte, que passou a ser, em geral, a unidade básica de informação. Em Java, um tipo primitivo inteiro pode ser representado de cinco maneiras, dependendo da quantidade de bytes que ele usa para armazenamento: Tipo Bytes int 4 long 8 short 2 byte char 2 Por exemplo, um valor short pode armazenar no máximo o valor positivo = 32.767, que corresponde a todos os bits dos dois bytes ligados (), menos o bit mais à esquerda de todo o conjunto, que é reservado para indicar o sinal do número: indica positivo, indica negativo. Os tipos long, int e byte também adotam o bit de sinal. Representação binária de números negativos Internamente, os computadores realizam a subração a b através da soma de a com o complemento para 2 de b. Obtém-se o complemento para 2 de um número binário somando ao seu complemento para. Para obter o complemento para de um número binário, basta inverter todos os seus bits. Ex: usando a notação Java short s = 49; O tipo short usa 2 bytes, com sinal: Complemento para de 49...... Adicionando... + Complemento para 2 de 49... que corresponde ao -49. Repare que o bit de sinal (mais à esquerda) é. A representação binária usual de um número negativo é o complemento para dois do número positivo. Uma forma de demonstrar a correção disso é somar as representações binárias do número positivo e do seu negativo (complemento para 2), o que resultará na representação do, respeitando a mesma quantidade de bytes em todas as representações. OPERAÇÕES BIT A BIT EM JAVA Em Java, pode-se fazer operações bit a bit com qualquer dos tipos primitivos inteiros. Estas operações permitem manipular a representação binária dos valores. Operadores OU, OU exclusivo, E e Negação Os três primeiros operam sobre dois operandos comparando cada bit de um deles com o bit correspondente do outro. O operador de negação (também chamado de complemento para ) atua sobre apenas um operando. A tabela seguinte mostra a regra de cada um. Programação I - Prof. Aníbal - Notas de aula 2 4

Operadores bit a bit Nome Símbolo Descrição OU (or) Resulta se um ou ambos os bits operandos tem valor. Resulta se ambos os bits forem. OU Exclusivo (xor) ^ Resulta somente quando um dos operandos é. Nos demais casos resulta. E (and) & Resulta somente quando ambos os operandos é. Nos demais casos resulta Negação (not) ou complemento para ~ Inverte o valor do bit para e vice-versa. Exemplos: int a = 8; //Repres. binária: int b = ; //Em binário: int c = a b; //c recebe = int d = a ^ b; //d recebe = 2 int e = a & b; //e recebe = 8 int f = ~a; //f recebe = -9 Os operadores lógicos e && comparam duas expressões booleanas. Em Java, esta avaliação é interrompida quando o resultado final pode ser previsto. Por exemplo, em if (x + y m n + 2)..., se a expressão da esquerda (x+y) for true, Java nem avalia a da direita, pois o resultado da expressão lógica será true independente do valor da segunda expressão. Chama-se isso de avaliação em "curto circuito". Se o programador, todavia, quer forçar a avaliação da segunda expressão, deve usar o operador bit a bit correspondente: if (x + y m n + 2)... Isto pode ser importante se a expressão da direita tem alguma chamada de método que deve ser executada de qualquer forma. Observação similar vale para o operador &, em realação ao &&. Operadores de deslocamento Existem três operadores bit a bit em Java para deslocamento. A operação de deslocamento consiste em deslocar para a direita ou para a esquerda a configuração binária de um certo valor inteiro ou char. Por exemplo, um int de valor representado por. Se for feito um deslocamento para a esquerda de, digamos, 2 posições, teremos, que é a representação binária de 4. Conclui-se que é necessário informar quantas posições se deseja deslocar. A tabela abaixo mostra os operadores de deslocamento, considerando op e op2 operandos inteiros ou char. Nome Sintaxe Descrição op << op2 Deslocamento para a esquerda (shift left) Deslocamento para a direita mantendo o sinal (shift right) op >> op2 Desloca os bits de op para a esquerda na quantidade de bits indicada por op2, preenchendo com s os bits menos significativos. Desloca os bits de op para a direita na quantidade de bits indicada por op2, propagando o bit de sinal. Deslocamento para a direita (shift right) op >>> op2 Desloca os bits de op para a direita na quantidade de bits indicada por op2. Só opera sobre int e long. Programação I - Prof. Aníbal - Notas de aula 2 5

Exemplos: int f = -3; // int g = f << 3; //desloca f para a esquerda 3 posições //g valerá: = -24 int h = f >> 2; //h valerá: = - //o bit de sinal propagou-se por 2 posições, mantendo o //valor negativo int i = f >>> 2;//i valerá: = //.73.74.823 não propagou o bit de sinal e o resultado //virou positivo Usar o operador << para deslocar n posições é equivalente a multiplicar por 2 n. Usar o operador >> para deslocar n posições é equivalente a dividir (divisão inteira) por 2 n. Todos os operadores bit a bit podem ser combinados com atribuição. Ex: x = x & y; pode ser resumida para x &= y; Exercícios. Indique o valor posicional de cada dígito no número decimal 23.59 2. Escreva o valor do exercício em binário, octal e hexadecimal 3. Qual o valor no sistema decimal do octal 77? 4. 923 pode ser a representação de um número octal? Por quê? 5. Qual o valor no sistema decimal da constante Java xac? E no sistema binário? 6. Escreva um método em Java que recebe um string representando um valor binário inteiro e retorna seu valor no sistema decimal na forma de um int. 7. Como é armazenado cada um dos valores abaixo internamente? int i = ; long g = -25; short s = -7; byte b = 27; 8. O que será impresso pelo trecho abaixo? int a = ; int b = 2; System.out.println((a & b) + " " + (a b)); a = 2; System.out.println((a & b) + " " + (a b)); a = ; System.out.println((a & b) + " " + (a b)); 9. O que será impresso? System.out.println((32 >> 3) + " " + (4 << 3) + " " + (32 >>> 3));. O que será impresso? int a = ; for (int i =; i<3; i++) System.out.println(a <<= );. O que será impresso? for (int i = ; i < 2; i <<= 2) System.out.println(i); 2. O que será impresso? for (int i = 44; i > x; i >>= 2) System.out.println(i); Programação I - Prof. Aníbal - Notas de aula 2 6

Respostas. 2., 3., 5, e 9. 2., 26675, 2737. 3. 63. 4. Não, porque o símbolo de maior valor do sistema octal é 7. 5. 258 e. 6. public int converteparadecimal(string bin){ int i = ; int expo = ; for (int p = bin.length() - ; p>=; p--){ if (bin.substring(p, p+).equals("")) i += Math.pow(2, expo); expo++; } return i; } 7. i = g = s = b = 8. 3 9. 4 32 4. Exibe as potências sucessivas de 2, de 2 até 7374824.. Potências sucessivas de 4 menores que 2... 2. 5 25 3 6 3 Programação I - Prof. Aníbal - Notas de aula 2 7