Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de...

34
Sistemas de Computação Bits e operações

Transcript of Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de...

Page 1: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Bits e operaçõesBits e operações

Page 2: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Porque utilizar base 2 ?

• Representação na base 10– Estamos acostumados– Representação natural para transações financeiras (precisão)

• Implementação eletrônica na base 10– Difícil de armazenar– Difícil de codificar 10 níveis de tensão em um único fio– Difícil de implementar operações básicas (soma, multiplicação

etc.)

Page 3: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Representação Binária

• Circuitos eletrônicos trabalham com tensões com valores analógicos, podendo assumir qualquer valor nos limites permitidos

– Ex: Alimentação de 0 a 5 V, valores de 3,67 V, 0,5 V

• Circuitos digitais partem de circuitos eletrônicos e identificam apenas dois valores: 0 e 1

• Uma faixa de valores é definida como 1 e outra como 0

– Ex: Tecnologia TTL: 2-5V 1, 0-0,8 V 0

Page 4: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Representação Binária

• Vantagens: – Fácil de armazenar em elementos biestáveis– Precisão pode ser menor

• 2,8V e 3,3 V correspondem a 1– Implementação mais fácil das operações aritméticas

• Números de bits necessários para expressar Ncoisas diferentes é K, onde K é o menor número tal que 2K N

– Ex: Qual a cor do seu cabelo (preto,castanho,louro e ruivo)?4 opções, 2K 4, K=2, 2 bits, 00(preto), 01(castanho), 10(louro),

11(ruivo)

Page 5: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Organização da memória

• Computadores acessam grupos de bits de uma vez

• Menor unidade de endereçamento 1 byte = 8 bits

• Programa em linguagem de máquina enxerga a memória como um grande array de bytes, denominado memória virtual

• Cada byte de memória possui um endereço associado a ele e o conjunto de endereços éconhecido como espaço de endereçamento virtual

Page 6: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Organização da memória

• Este espaço é implementado por uma combinação de elementos:

– SRAM, DRAM, disco e sistema operacional

• No Unix e Windows, espaço de endereçamento privativo de um processo particular

• Tarefas do compilador e sistema de execução– Alocar e gerenciar onde os programas executáveis devem ser

armazenados– Vários mecanismos: estático, stack e heap– A alocação é sempre realizada dentro de um único espaço de

endereçamento virtual

Page 7: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Representação Hexadecimal

• Representação binária requer muitos 1s e 0s– 8 bits: 000000002 a 111111112

• Representação hexadecimal é um sistema baseado na base 16

• Requer 16 dígitos diferentes:– 0 a 9, A a F

• Cada dígito hexadecimal representa 4 bits de número representado em binário

– 8 bits: 0016 a FF16

Page 8: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Conversão entre Bases 2 e 10

• Números são representados utilizando-se a base 2– 1012, número binário cujo valor decimal é 5

• Valor de um número decimal: – D0 100 + D1 101 + D2 102 + …– 903, D0 = 3, D1 = 0, D2 = 9– 3 100 + 0 101 + 9 102 =903

• Valor decimal de um número binário:– B0 20 + B1 21 + B2 22 + …– 100011011, B0,, B1 ,B3, B4, B8

– 20 + 21 + 23 + 24 + 28 = 1 + 2 + 8 + 16 + 256 = 283

Page 9: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Conversão entre Bases

• Um computador possui uma unidade básica de informação de 12 bits. Quantos números podem ser representados por essa unidade básica e quais são eles ?

Page 10: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Conversão entre Base 10 e 2

1. Dividir número decimal por 2 e colocar o resto como o algarismo menos significativo

2. Enquanto o quociente for diferente de 02.1 Dividir o quociente por 22.2 Colocar o resto à esquerda do anterior2.3 Volte ao passo 2

Page 11: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Representação de Números em Base 16, 10 e 2

Dígito hexadecimal Valor decimal Valor binário

0 0 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 1110

F 15 1111

Page 12: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Conversão entre as Base 2 e 16

• 16 = 24

• Um algarismo hexadecimal é representado por 4 bits

• Divide-se o número binário em grupos de 4 bits da direita para a esquerda e substitui-se o algarismo hexadecimal correspondente ao grupo

Ex: (1011011011)2

(0010)(1101)(1011)2=(2DB)16

2 D B

Page 13: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Conversão entre as Base 16 e 2

• Substitui-se cada algarismo hexadecimal pelo grupo de 4 bits correspondente

Ex: (306)16

(0011)(0000)(0110)2=(001100000110)2

3 0 6

Page 14: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Conversão entre Bases 16 e 10

• Valor decimal de um número hexadecimal:– H0 160 + H1 161 + H2 162 + …Ex:

(2A5)16 = 5160 + 10161 + 2162 = 5 +160 + 512 = (677)10

Page 15: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Conversão entre Base 10 e 16

1. Dividir número decimal por 16 e colocar o resto como o algarismo menos significativo

1. Enquanto o quociente for diferente de 02.1 Dividir o quociente por 162.2 Colocar o resto à esquerda do anterior2.3 Volte ao passo 2

Page 16: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Palavras utilizadas nas máquinas

• Cada máquina possui um tamanho de palavra– Define o maior tamanho de inteiro da máquina incluindo endereços

• A maioria das máquinas possui uma palavra de tamanho igual a 32 bits

– Limita endereçamento a 4GB

• Estão aparecendo sistemas com tamanho de palavra de 64 bits

– Capacidade de endereçamento de aproximadamente 1,8 1019

bytes

Page 17: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Organização da memória orientada a palavra

• Endereços especificam localizações de bytes

– endereço do primeiro byte da palavra

– endereços de palavras sucessivas diferem por 4 (32-bit) ou 8 (64-bits)

End.=

0000

End.=

0008

End.=

0000

End.=

0004

End.=

0008

End.=

0012

Palavra de 32 bits

Palavra de 64 bits

Bytes Endereços

0000000100020003000400050006000700080009001000110012001300140015

Page 18: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Representação de dados

• As máquinas suportam múltiplos formatos de dados

– Utilizam frações ou números múltiplos do tamanho da palavra– Sempre um número inteiro de bytes

• Tamanhos de objetos em C (em bytes)Declaração em C 32-bit típico Compaq Alpha

char 1 1short int 2 2

int 4 4long int 4 8

char * 4 8float 4 4

double 8 8

Page 19: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Ordenação dos bytes

• Como os bytes de uma palavra multibytes devem ser ordenados na memória ?

• PCs são máquinas Little Endian– O byte menos significativo possui o menor endereço

• Suns, Macs são máquinas Big Endian– O byte menos significativo possui o maior endereço

Page 20: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Ordenação dos bytes

• Exemplo:– Variável X possui a representação 0x01234567– Endereço de X é 0x100

Big endian

Little endian

01 23 45 67

67 45 23 01

0x100 0x101 0x102 0x103

0x100 0x101 0x102 0x103

Page 21: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Examinando representação de dados

• Código para imprimir a representação de dados

• Associa a um ponteiro o tipo unsigned char *cria um array de bytes

typedef unsigned char *byte_pointer;void show_bytes(byte_pointer start, int len){int i;for (i=0; i<len; i++)printf("%p\t%.2x\n", start+i,start[i]);

printf("\n");}

Page 22: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Examinando representação de dados

• int a = 15213;

• printf("int a = 15213;\n");

• show_bytes((byte_pointer) &a, sizeof(int);

Resultado:

int a = 15213;11ffffcb8 6d11ffffcb9 3b11ffffcba 0011ffffcbb 00

Page 23: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Representando inteiros

int A = 15213; Decimal: 15213Binário: 0011 1011 0110 1101Hexa: 3 B 6 D

Alpha, Linux, NT Sun

6D

3B

00

00

00

00

3B

6D

Page 24: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Representando ponteiros

int A = 15213int *P = &A

Endereço AlphaHexa: 1 F F F F F C A 0Bin.: 0001 1111 1111 1111 1111 1111 1100 1010 0000

Endereço SunHexa: E F F F F B 2 CBin.: 1110 1111 1111 1111 1111 1011 0010 1100

A0

FC

FF

FF01

00

00

00

EF

FF

FB

2C

Page 25: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Representando floats

float A = 15213,0;

Representação em ponto flutuante padrão IEEEHexa: 4 6 6 D B 4 0 0 Binário: 0100 0110 0110 1101 1011 0100 0000 0000

Alpha, Linux, NT Sun

00

B4

6D

46

46

6D

B4

00

Page 26: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Representando strings em C

• Representados como um array de caracteres

• Cada caracter no formato ASCII

– codificação 7-bit– caracter 0 tem o cód. 0x30

• dígito i tem cód. 0x30+i

• Último caracter é o caracter nulo

• Sem problemas de ordenação de bytes, pois o dado é um byte

• Arquivos texto geralmente independentes de plataforma

Alpha, Linux, NT Sun

31

35

32

31

33

00

char *S= ”15123 ”

31

35

32

31

33

00

Page 27: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Representação de código de máquina

• O programa é codificado como uma seqüência de instruções

– Operações simples: aritméticas, leitura ou escrita da memória, desvio condicional

– Instruções codificadas em bytes• Alpha, Sun,Mac utilizam instruções de 4 bytes (RISC)• PC utiliza instruções de tamanho variável (CISC)

– Tipos de instruções e codificação diferentes para máquinas diferentes

• código binário não compatível

Page 28: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Representando instruções

Alpha Sun PCint sum (int x, int y)

{

return x+y;

}

• Alpha e Sun utilizam 2 instruções de 4 bytes

• PC utiliza 7 instruções de 1, 2 e 3 bytes

– estruturas do programa em NT e Linux diferentes

000030420180FA6B

81C3E00890020009

5589E58B450C03450889EC5DC3

Page 29: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Álgebra booleana

• Desenvolvida por George Boole no século 19 aplicada por Claude Shannon em sistemas digitais (1937)

• Representação algébrica da lógica codifica VERDADEIRO como 1 e FALSO como 0

• Operações :– AND: A & B=1 somente quando A=1 e B=1– OR: A | B 1 quando A=1 ou B=1– NOT: ~A=1 quando A=0– XOR= A^B=1 quando A=1 ou B=1, mas não ocorre quando ambos

iguais a 1

Page 30: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

01101001 01101001 01101001

& 01010101 | 01010101 ^ 01010101 ~01010101

01000001 01111101 00111100 10101010

Álgebra booleana

• Pode operar em vetores de bits

• Representação de conjuntos– Um vetor com w bits representa os subconjuntos {0,...,w} e aj=1 se j A

• 01101001 {0,3,5,6}• 01010101 {0,2,4,6}

– & Interseção 01000001 {0,6}– | União 01111101 {0,2,3,4,5,6}– ~ Complemento 10101010 {1,3,5,7}

Page 31: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Operações com bits em C

• Operações &, |, ~,^disponíveis em C– Se aplicam a qualquer tipo inteiro: long, int, short, char

• Tratam os argumentos como vetores de bits

• Exemplos (tipo char)– ~0x41 0xBE

01000001 10111110

– 0x69 & 0x55 0x41

01101001 & 01010101 01000001

– 0x69 | 0x55 0x7D

01101001 | 01010101 01111101

Page 32: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Operações com bits em C

• Rotina para trocar os valores armazenados nos endereços estipulados pelas variáveis do tipo ponteiro x e yvoid troca(int *x, int *y){

*x = *x ^ *y; /* 1 */*y = *x ^ *y; /* 2 */*x = *x ^ *y; /* 3 */

}

Passo *x *yInício A B

1 A^B B2 A^B (A^B)^B=A (̂B^B)=

A^0=A3 (A^B)^A=(B^A)^A=

B (̂A^A)=B^0=BA

Final B A

Page 33: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Operações lógicas em C

• Operações &&, ||, ! disponíveis em C– Tratam 0 como FALSO– Qualquer coisa diferente de 0 é VERDADEIRO– Sempre retorna 1 ou 0

• Exemplos (tipo char)– !0x41 0x00

– !0x00 0x01

– !!0x41 0x01

– 0x69 && 0x55 0x01

– 0x69 || 0x55 0x01

Page 34: Bits e operaBits e operaççõesõessimone/scminter/contaulas/3_BITS.pdf · • Menor unidade de endere ç amento 1 byte = 8 bits • Programa em linguagem de m á quina enxerga a

Sistemas de Computação

Operações de deslocamento em C

Deslocamento à esquerda: x << y– desloca o vetor de bits x, y posições para

a esquerda– joga fora os bits deslocados da esquerda– preenche os bits da direita com 0s

Deslocamento à direita: x >> y– desloca o vetor de bits x, y posições para

a direita– joga fora os bits deslocados da direita– preenche os bits da esquerda com 0s para

desl. lógico– preenche os bit da esquerda com o bit mais

à esquerda que sobrou para desl. aritmético

Argumento x 01100010

<< 3 00010000

Log. >> 2 00011000

Aritm. >> 2 00011000

Argumento x 10100010

<< 3 00010000

Log. >> 2 00101000

Aritm. >> 2 11101000