TC – DEI, 2005/2006
» WHAT WOULD LIFE BE WITHOUT ARITHMETIC, BUT A SCENE OF HORRORS? « Sydney Smith, 1835
Sistemas de Numeração
Paulo [email protected]://www.dei.uc.pt/~pmarques
Tecnologia dos Computadores 2005/2006
TC – DEI, 2005/2006
Sistemas de Numeração
Os valores existem no mundo, independentemente da sua representação
26XXVI
São representações igualmente válidas
TC – DEI, 2005/2006
Sistemas Posicionais
O sistema posicional é utilizado devido à facilidade com a qual é possível fazer calculos
Tente encontrar um algoritmo para multiplicar, em numeração romana, XVIII por XIXIII!
1 9 2 6
100103 102 101
1926 = 1x103 + 9x102 + 2x101 + 6x100
TC – DEI, 2005/2006
Sistemas Posicionais (2)
Sistema de numeração de base 10: Existem 10 algarismos diferentes
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
O valor de cada posição i é dado pelo valor nessa posição vezes um factor de escala basei
Para calcular o valor de um número representado numa base radix: (An-1 An-2 An-3... A0)radix
Faz-se:
An-1radixn-1 + An-2radixn-2 + An-3radixn-3 + ... +
A0radix0
TC – DEI, 2005/2006
Nos sistemas informáticos
Internamente, tudo é feito em base 2, i.e. BINÁRIO Existem dois símbolos: 0 e 1
(ligado/desligado, verdadeiro/falso) Cada símbolo é um bit (binary digit)
No entanto, em termos de representações, tipicamente utiliza-se: Binário (base 2) Hexadecimal (base 16)
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
... e algumas vezes Octal (base 8)
TC – DEI, 2005/2006
» quatre-vingt, quatre-vingt-dix, quatre-vingt-dix-neuf « 80, 90, 99 em Françês
TC – DEI, 2005/2006
Contar em binário
0000 => (0)10
0001 => (1)10
0010 => (2)10
0011 => (3)10
0100 => (4)10
0101 => (5)10
0110 => (6)10
0111 => (7)10
1000 => (8)10
1001 => (9)10
1010 => (10)10
1011 => (11)10
1100 => (12)10
1101 => (13)10
1110 => (14)10
1111 => (15)10
TC – DEI, 2005/2006
Contar em hexadecimal
00 => (0)10
01 => (1)10
02 => (2)10
03 => (3)10
04 => (4)10
05 => (5)10
06 => (6)10
07 => (7)10
08 => (8)10
09 => (9)10
0A => (10)10
0B => (11)10
0C => (12)10
0D => (13)10
0E => (14)10
0F => (15)10
10 => (16)10
11 => (17)10
TC – DEI, 2005/2006
Quiz: Conversão para decimal
Converta para decimal os seguintes números: Pista: lembre-se do que é que “sistema posicional” e
“base” querem dizer...
(1101010)2
(C1B3)16
TC – DEI, 2005/2006
Nota
Virtualmente todos os informáticos sabem as potências de dois de cabeça
28210 29 2427 26 25 2023 22 21
12481632641282565121024
0 11 21 41 81 161 321 641 1281 2561 51211 1024
TC – DEI, 2005/2006
Resposta ao Quiz
(1101010)2
= 020 + 121 + 022 + 123 + 024 + 125 + 126
= 106 (na base 10)
(C1B3)16
= 3160 + 11161 + 1162 + 12163
= 49587 (na base 10)
TC – DEI, 2005/2006
Conversão de decimal para outras bases
Divide-se sucessivamente o número pela base O resto da divisão vai constituindo os sucessivos
digitos do número Exemplo: Converter 402 em binário
402 ÷ 2 = 201 e resto 0201 ÷ 2 = 100 e resto 1100 ÷ 2 = 50 e resto 0 50 ÷ 2 = 25 e resto 0 25 ÷ 2 = 12 e resto 1 12 ÷ 2 = 6 e resto 0 6 ÷ 2 = 3 e resto 0 3 ÷ 2 = 1 e resto 1 1 ÷ 2 = 0 e resto 1
(402)10 = (110010010)2
TC – DEI, 2005/2006
Conversão decimal-hexadecimal
Exactamente o mesmo processo! Converter 402 em hexadecimal Converter 673 em hexadecimal
402 ÷ 16 = 25 e resto 2 25 ÷ 16 = 1 e resto 9 1 ÷ 16 = 0 e resto 1 (402)10 = (192)16
673 ÷ 16 = 42 e resto 1 42 ÷ 16 = 2 e resto 10 (A) 2 ÷ 16 = 0 e resto 2 (673)10 = (2A1)16
TC – DEI, 2005/2006
Conversão binário-hexadecimal e vice-versa
Como 16 é 24, isso quer dizer que cada digito em hexadecimal corresponde a 4 dígitos em binário, directamente! Exemplo: (110110010010)2
110110010010
D 9 2
TC – DEI, 2005/2006
Nota sobre o sistema hexadecimal
Nos computadores (e livros), é comum utilizar as seguintes notações para representar números hexadecimais: 0xD92 ou 0xd92 D92h ou d92h
TC – DEI, 2005/2006
BCD: Binary-Coded-Decimal
Nos sistemas electrónicos e muitas vezes nos informáticos, utiliza-se também o sistema BCD:
Binary Coded Decimal
Cada conjunto de quatro bits representa um valor decimal. Só são válidos os valores de 0000 a 1001 (i.e. 0 a 9)
011100011000
7 1 8
BCD
Decimal
TC – DEI, 2005/2006
Armazenamento de dados
Quantos bits são necessários para representar N números? Exemplo: quantos bits necessito para representar
100 objectos, ou para representar 100 números diferentes? (0..99)
Sistema binário é um sistema posicional. Com K bits, tenho 2K números diferentes
Para representar N elementos diferentes, são necessários log2(N) bits. Para representar 100 objectos, são necessários 7
bits!
TC – DEI, 2005/2006
Grandezas de armazenamento de informação
bit: binary digit, unidade básica de informação
byte: 8 bits
Kbyte: 210 byte, i.e. 1024 bytes
Mbyte: 210 Kbyte, i.e. 1024 Kbytes
Gbyte: 210 Mbyte, i.e. 1024 Mbytes
Tbyte: 210 Gbyte, i.e. 1024 Gbytes
Quiz: Se eu quiser armazenar 20.000.000 números inteiros, cada número de 32 bits, quantos MByte preciso?
TC – DEI, 2005/2006
Grandeza para transmição de informação
Largura-de-banda:100Mbps
100Mbps = 100*1000*1000 bits/s = = 11.9 Mbyte/s
Note-se que no caso de bps, K, M, G e Trepresentam factores de 1000, não de 1024!
TC – DEI, 2005/2006
Palavras do computador
Os registos do processador têm um certo tamanho em bits. Ao tamanho dos registos do processador chama-se word ou palavra. Quando se diz que o Pentium 4 é um processador de 32 bits,
quer dizer que este manipula internamente dados de 32 bits. Tipicamente também quer dizer que é capaz de gerar endereços de 32 bits.
Quiz 1: Sabendo que o Pentium 4 endereça a memória usando 32 bits, qual é a memória máxima que um PC comum pode ter? 4 Gbytes! (232/1024/1024/1024)
Quiz 2: Sabendo que os registos de dados do Pentium 4 são de 32 bits, qual é o número máximo (sem sinal), que se pode representar? 4294967295 (232-1)
TC – DEI, 2005/2006
Bit mais significativo e menos significativo
110110010010
MSB(Most Significant Bit)
LSB(Least Significant Bit)
TC – DEI, 2005/2006
Máquinas big-endian & little-endian
Imaginemos que um computador tem uma palavra de 16 bits. De que forma é que esta deverá ser armazenada
em memória?
MOV [1000], 0xff00
00ff
ff001001
100010011000
??
Little-endian(e.g. PC)
Big-endian(e.g. Sun-Sparc, Network-byte-order)
TC – DEI, 2005/2006
Porque é que o céu é azul?
TC – DEI, 2005/2006
» Numbers written on restaurant bills within the confines of restaurants do not follow the same mathematical laws as numbers written on any other pieces of paper in any other parts of the
Universe « Douglas Adams, The Hitchhiker's Guide to the Galaxy
TC – DEI, 2005/2006
Leitura...
The Ultimate Hitchhiker's Guide to the Galaxyby Douglas AdamsISBN 0345453743, Del Rey Publisher
The Hitchhiker’s Guide to the Galaxy
The Restaurant at the End of the Universe
Life, the Universe and Everything
So Long, and Thanks for All the Fish
Mostly Harmless
TC – DEI, 2005/2006
» Every passing minute is another chance to turn it all around. « Sofia, in Vanilla Sky
Representação de Números Negativos & Racionais
Operações Aritméticas
Paulo [email protected]://www.dei.uc.pt/~pmarques
Tecnologia dos Computadores 2004/2005
TC – DEI, 2005/2006
Números negativos: Sinal e Magnitude
Quando se coloca um símbolo extra (+-) que representa o sinal de um número, chama-se a essa representação: Representação em sinal e magnitude (100)10 = (1100100)2
+100-100
0 1 1 0 0 1 0 0
1 1 1 0 0 1 0 0
Bit Sinal Magnitude
+100
-100
TC – DEI, 2005/2006
Números Negativos: Sistema de Complementos
Problemas do sistema de sinal e magnitude Para fazer cálculos, as regras são confusas e
complicadas de implementar (e.g. se ambos os sinais são positivos, o sinal é o mesmo, se um é positivo e outro negativo, subtrai-se e o sinal é o do maior em valor absoluto, etc.)
Existem duas representações para 0
Sistemas de complemento: A ideia é simplificar as regras e os cálculos. Por
exemplo, subtrair deve de ser a mesma coisa do que adicionar, e.g. 3 - 2 = 3 + (-2)
TC – DEI, 2005/2006
Complementos para 1
O número negativo é obtido negando todos os bits do correspondente positivo Vantagens: muito fácil fazer cálculos e não é necessário processar o
bit de sinal separadamente
01010100001100100001000011111110110111001011101010011000
01100111
+5+4+3+2+100-1-2-3-4-5-6-7
+6+7
Exemplo: Somar 2 com -5 Subtrair a 2, o número 5
0 0 1 0 (+2)
1 0 1 0+ (-5)
1 1 0 0 (-3)
TC – DEI, 2005/2006
Complementos para 1
Na verdade, fazer a adição é um pouco mais complicado
0 1 0 1 (+5)
1 1 0 1+ (-2)
0 0 1 01Carry-out
1
0 0 1 1 (+3) Note-se que isto só se aplica quando sãonúmeros de sinais diferentes:
• O carry-out tem de ser adicionado!
As condições de overflow são algo complicadas de detectar...
• Por exemplo, 5+5 = ??
TC – DEI, 2005/2006
Complementos para 2
O sistema utilizado em todas as máquinas modernas Não é necessário uma pessoa preocupar-se com o carry
Cálculos realmente directos Overflow é trivial de detectar Uma única representação para o 0!
Conversão para complementos de 2 (dois métodos): Calcula-se o complementos para um e soma-se 1 Copiam-se os bits da direita (LSB) para a esquerda até
encontrar o primeiro 1 e trocam-se todos os bits a partir dai.
(23)10 = (00010111)2 (-23)10 = (11101001)2
(9)10 = (00001001)2 (-9)10 = (11110111)2
TC – DEI, 2005/2006
Complementos para 2
01010100001100100001000011111110110111001011101010011000
01100111
+5+4+3+2+10-1-2-3-4-5-6-7-8
+6+7
0 1 0 1 (+5)
1 1 1 0+ (-2)
0 0 1 11Carry-out (+3)
Exemplo: Subtrair a 2, ao número 5 Somar 5 com -2
Ignora-se o valor de carry!
TC – DEI, 2005/2006
Complementos para 2 Overflow
Quando o resultado não cabe no número de bits do resultado, diz-se que ocorreu um overflow.
Na adição em complementos para dois, um overflow é detectado quando o valor de carry que entra no bit de sinal é diferente do que sai.
0 1 0 (+5)
0 1 1+ (+6)
Carry
1
0
1
0
1
0
0
1
1
0
≠, o que implica que o cálculo está errado!
(-5) ????
TC – DEI, 2005/2006
Representação de números reais
Existem dois sistemas de uso comum: Vírgula fixa: existe um determinado número de bits
fixo que representa a parte inteira, e um fixo de bits que representa a parte fraccionária
1 1 0 1 0 0 023 22 21 20 2-1 2-2 2-3
12-4
3 2 5 2 2 1 5103 102 101 100 10-1 10-2 10-3
310-4
3252.2153
1101.0001
• Quanto vale este número em decimal?• Qual é o valor máximo e mínimo que consigo representar?
TC – DEI, 2005/2006
Representação de números reais
Vírgula flutuante: o equivalente à representação científica. Existe um número de bits que corresponde a mantissa e um certo número de bits que corresponde ao expoente
0 0 0 3 4 0 0103 102 101 100 10-1 10-2 10-3
010-4
+3.4e+05 (=3.4x10+05) 0S
0 0S 101
5100
Mantissa Expoente
TC – DEI, 2005/2006
Formato IEEE 754
Actualmente virtualmente todos os computadores utilizam o formato IEEE 754.
A base é implicita e é 2. Precisão simples: 32 bits
É utilizado um código de excesso para a mantissa (127)
Precisão dupla: 64 bits É utilizado um código de excesso para a mantissa (1023)
ExpoenteS Mantissa
1bit 8 bits23 bits
ExpoenteS Mantissa
1bit 11 bits52 bits
Algumas Operações Importantes em Binário
Paulo [email protected]://www.dei.uc.pt/~pmarques
Tecnologia dos Computadores 2005/2006
TC – DEI, 2005/2006
AND, OR, XOR
TC – DEI, 2005/2006
Operações Bitwise
AND, útil para desligar bits! Queremos desligar o terceiro bit de uma palavra:
01011110 AND 11111011 = 01011010
OR, útil para ligar bits! Queremos ligar o primeiro bit de uma palavra:
01011110 OR 00000001 = 01011111
XOR, útil para inverter bits! Queremos trocar o primeiro bit de uma palavra:
01011110 XOR 00000001 = 0101111101011111 XOR 00000001 = 01011110
0110101011AND
01001
0110101011OR
01111
0110101011XOR
00110
TC – DEI, 2005/2006
Operações de Deslocamento
Shift Right (SHR ou >>): Desloca para a direita os bits de uma palavra
01011110 >> 2 = 00010111
Shift Left (SHL ou <<): Desloca para a esquerda os bits de uma palavra
01011110 << 2 = 01111000
São operações importantes nomeadamente porque: SHL 1: Corresponde a multiplicar o número por 2
SHL 2: Corresponde a multiplicar o número por 4etc.
SHR 1: Corresponde a dividir o número por 2SHR 2: Corresponde a dividir o número por 4etc.
TC – DEI, 2005/2006
Operações de Deslocamento (2)
Normalmente existem duas operações de deslocamento à direita: Lógica, em que é um deslocamento simples e o bit
que é introduzido no MSB é 0
Aritmética, em que o bit que é introduzido no MSB é igual ao bit de sinal
Usado quando o deslocamento corresponde a uma divisão e tem de se manter o valor do bit de sinal para as coisas baterem certo!
1 1 0 1 1 0 0 1 1 0 1 1>> 1
1 1 0 1 1 1 1 1 1 0 1 1>>> 1
(-7)
TC – DEI, 2005/2006
That’s it!
Sistema pictográfico de representar números... em chinês!http://www.webcom.com/ocrat/chargif/numbers.html
TC – DEI, 2005/2006
Para saber mais...
[CSO] Computer Science – An Overview Capítulo 1 (1.1, 1.2, 1.4-“representing numeric
values”, 1.5, 1.6, 1.7, Capítulo 2 (2.4)
The Essentials of Computer Organization and Architecture Capítulo 2 (2.1 a 2.6.1);
cópias fornecidas no quiosque