Hardware e o Sistema Binário Grosso modo: tudo o que não é software. – Hardware: relacionado com os componentes do computador. Fronteira entre hardware e software: difusa Hardware: eletricidade liga / desliga: sistema binário 1 / 23 Sistema Binário Proposto por Leibniz (sec.XVII) Linguagem reconhecida pelo computador Alfabeto: {0, 1} Léxico: {0 | 1}* Sintaxe e Semântica: definidas pela arquitetura do computador 2 / 23 Linguagem Binária Apenas dois símbolos – Exemplo de expressões – 0 e 1 102, 11012, 12, 02 Qual é o significado dessas expressões? – Depende do contexto da computação. 3 / 23 Gap Semântico Há um abismo entre a linguagem humana e a linguagem binária. As linguagens de alto nível minimizam o abismo. Contudo, ainda assim, temos de entender o sistema binário. – Importante para programar corretamente. 4 / 23 Entendendo o Sistema Binário O sistema binário possui apenas 2 símbolos. – Sistema decimal: 10 símbolos. Como representar uma quantidade maior que a quantidade de símbolos? – Precisaremos de uma combinação de símbolos. 5 / 23 Como representar o número 201 em decimal? Usamos os símbolos 2, 0 e 1. Observem a ordem dos símbolos. – Convém lembrar: Os símbolos estão posicionados conforme sua respectiva casa decimal. 201 = 2*102 + 0*10 + 1*100 O mesmo raciocínio vale para qualquer sistema numérico. 6 / 23 Como escrever um número binário? Usamos apenas os símbolos 0 e 1. – – Os símbolos devem estar posicionados conforme sua respectiva casa decimal. 11012 Mas o que significa o número 11012? – Fica mais fácil de entender quando convertemos o número binário para o decimal correspondente. 7 / 23 Convertendo Binário para Decimal Convém lembrar: 253 = 2*102 + 5*10 + 3*100 Então: 11012 = 1*23 + 1*22 + 0*2 + 1*20 = 1310 8 / 23 Convertendo Decimal para Binário Como escrever 45 na linguagem binária? leia n faça resto = n % 2 imprima resto n = n / 2 // divisão inteira enquanto n > 0 imprima ”leia os bits da dir para esq” 9 / 23 Como Representar Números Negativos? O bit + significativo indica se o número é positivo ou negativo. 0 → positivo 1 → negativo Quais números são negativos? 102 1102 10112 1012 Depende da quantidade de bits! 10 / 23 Números Negativos Duas abordagens: Sinal-Magnitude Complemento de Dois 11 / 23 Sinal-Magnitude O bit + significativo indica o sinal. Os demais bits compõem o número. Exemplos (considere apenas 3 bits) Binário Dec 1 0 1 -1 0 0 1 1 1 1 1 -3 0 1 1 3 Como representar o zero? 1002 000 2 12 / 23 Complemento de Dois O bit + significativo indica o sinal. Todos os bits compõem o número. Exemplos (considere apenas 3 bits) Binário Dec 1 0 1 -3 0 0 1 1 1 1 1 -1 0 1 1 3 Como obter um número negativo em Complemento de Dois? 13 / 23 Complemento de Dois Positivo → Negativo 1) Tome um número positivo 2) Inverta os bits desse número 3) Some 1 ao número obtido no passo 2 Exemplo (considere apenas 3 bits) 1) 0112 2) 1002 3) 1002 + 12 = 1012 Qual é o maior número positivo em 5 bits? E qual é o menor? 14 / 23 S-M vs C2 C2 é mais usado atualmente. Um número a mais com a mesma quantidade de bits do que S-M. Apenas uma representação para o zero. • Circuitos lógicos mais simples. Bits Menor Maior 8 -128 127 16 -32768 32767 32 -2147483648 2147483647 64 -9223372036854775808 9223372036854775807 15 / 23 HEX DEC 0 0 Sistema Hexadecimal Alfabeto = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} Surgiu na IBM. Facilita a expressão de números binários. Cada símbolo corresponde a 4 bits. BIN 0000 1 1 0001 2 2 0010 3 3 0011 4 4 0100 5 5 0101 6 6 0110 7 7 0111 8 8 1000 9 9 1001 A 10 1010 B 11 1011 C 12 1100 D 13 1101 E 14 111016 / 23 F 15 1111 Hex → Bin → Hex Hex → Bin 1) Tome um número hex 2) Da dir. para esq. Cada algarismo deve ser convertido para o correspondente binário (4 bits) Bin → Hex 1) Tome um número bin 2) Da dir. para esq. Cada 4 bits, devem ser convertidos para o algarismo hex correspondente 17 / 23 Hex → Dec → Hex Hex → Dec 1A516 = 1*162 + 10*16 + 5*160 = 42110 Dec → Hex Idem Dec → Bin − Substitua 2 por 16 18 / 23 Operações Lógicas AND OR 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 0 1 1 1 1 1 1 1 19 / 23 Operações Lógicas XOR NOT 0 0 0 0 1 0 1 1 1 0 1 0 1 1 1 0 20 / 23 Operações Aritméticas SOMA SOMA SOMA 1 0 12 0 0 12 1 0 12 0 0 12 0 0 12 0 1 12 1 1 02 0 1 02 0 0 02 1 21 / 23 Operações Aritméticas E a subtração? Faça uma soma com um número negativo. As demais operações podem ser definidas em função da soma e subtração. 22 / 23 Referências BROOKSHEAR, J. Glenn. Ciência da Computação: uma visão abrangente Capítulo 1 Capítulo 2 23 / 23