Programação em C - IF

Page 45

O armazenamento dos dados

41

void imprime_binario(int numero) { while (numero > 0) { printf(”%d”, numero % 2); numero /= 2; } printf(”\n”); }

Notemos, primeiro, que essa função fornece os dígitos na ordem inversa (conforme foi observado acima); por exemplo, o número 12 = (1100)2 seria impresso como 0011. Veja também que, em vez de fixar o número de divisões, estabelecemos como critério de parada o anulamento do quociente. Com isso, não precisamos saber de antemão quantos dígitos binários tem o número; é claro que o quociente será zero quando só sobrar o dígito mais significativo.

4.2 O armazenamento dos dados Ao armazenar um número na memória do computador, precisamos estabelecer um tamanho padronizado (uma espécie de número de algarismos) que um número ocupará. Por que isso? Imagine que a memória do computador é uma enorme aglomeração de rodinhas numeradas. Se não tivesse um tamanho padrão, como saberíamos onde começa e onde termina cada número? Precisaríamos de algum outro número para saber onde cada número começaria, e essa história não terminaria nunca. Num computador, a menor unidade possível de informação é o bit; mas a menor unidade de informação que pode ser de fato acessada é o byte, que, nos microcomputadores modernos, equivale a 8 bits. No entanto, um byte não é muita coisa; números inteiros costumam ser armazenados em espaços de 1, 2, 4 ou 8 bytes (ou seja, 8, 16, 32 ou 64 bits, respectivamente). Apesar de o tamanho de um inteiro ser padronizado, ainda é possível que existam inteiros de mais de um tamanho. Por exemplo, em C existem pelo menos três tipos inteiros, de tamanhos diferentes. O que ocorre é que cada processador trabalha naturalmente com um certo tamanho de inteiro (usualmente, 32 ou 64 bits) — todos os seus espaços internos de armazenamento (eles se chamam registradores) têm esse mesmo tamanho. Quando queremos usar inteiros de tamanhos diferentes, o processador simplesmente trabalha com pedaços desses tais registradores ou com vários registradores juntos. Agora voltemos um pouco ao C. Já conhecemos os dois tipos básicos de inteiros: int e, embora não o tenhamos usado ainda, char (como vimos no começo do primeiro capítulo, os caracteres são armazenados como se fossem inteiros). O tipo char tem um tamanho único: um byte — ou seja, 8 bits. O tipo int geralmente tem um tamanho padrão de 32 bits, mas ele também possui alguns “subtipos” com tamanhos diferentes. São eles: •

short int, um “inteiro curto”, que costuma ter 16 bits;

long int, um “inteiro longo”, que costuma ter 32 bits (não há nada de errado aqui; o

tipo int realmente costuma ser igual ao long). •

long long int, que geralmente tem 64 bits.

(Somente no padrão C99)

Nota: No padrão da linguagem C, os tamanhos desses tipos de dados são definidos de uma maneira mais formal (e mais vaga), devido à grande diferença entre os vários tipos de sistemas em que o C pode ser usado. Eu os defini de uma maneira mais prática, segundo os tamanhos que esses tipos têm na maioria dos computadores pessoais de hoje em dia; a definição mais correta pode ser encontrada na especificação da linguagem.


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.