Valores numéricos
A linguagem trabalha com os seguintes valores numéricos:
Bytes são valores numéricos que ocupam 8 bits de memória. Bytes e estruturas são um tipo de dado primitivo a partir do qual são construídos todos os outros tipos da linguagem.
Seu intervalo de valores vai de 0 a 255.
A Biblioteca padrão possui rotinas para efetuar operações aritméticas comuns em bytes (e nos demais tipos numéricos abaixo), tais como soma, subtração, multiplicação e divisões inteiras.
Words (Palavras)
As words são compostas por 2 bytes e, consequentemente, ocupam 16 bits de espaço em memória.
Words possuem o funcionamento similar ao dos números inteiros, porém seu intervalo de valores vai de -32768 a +32767.
Devido às particularidades da arquitetura Windows/Intel x86, os bits em cada um dos bytes da word são armazenados na forma "little-endian" (da esquerda para a direita), porém os bytes em si são armazenados de forma inversa (ou seja, na forma "big endian").

Números inteiros
Um "número" consiste em dígitos, que podem estar precedidos de um sinal positivo ou negativo. Exemplos:
0
123
-2147483648
+2147483647
A implementação de um número de 32 bits é a seguinte:
Um número é uma estrutura com
Um primeiro byte,
Um segundo byte,
Um terceiro byte,
Um quarto byte, \ 4 bytes = 32 bits
Uma word de ordem inferior sob o primeiro byte,
Uma word de ordem superior sob o terceiro byte.
Os números são armazenados de trás para frente (de acordo com o formato "big-endian") devido à extremidade (ordenação) dos processadores x86.
O intervalo de valores do tipo número começa no número -2147483648 chegando até ao número +2147483647.
Números fracionários
Uma fração é um número seguido de uma barra e um número sem sinal.
Exemplos:
335/113
25946/9545
-19601/13860
A implementação de uma fração é a seguinte:
Uma fração é uma estrutura com
Um numerador e
Um denominador.
Números mistos
Um número misto é composto de um número inteiro e um '+' acompanhado de uma fração. Exemplos:
1+1/2
-2+2/3
3+3/4
Abaixo temos a implementação de números mistos:
Um numeral misto é uma estrutura com
Um número inteiro e
Uma proporção e
Uma fração sob a proporção.
Valores Hexadecimais
Os valores hexadecimais são prefixados com o caractere $
.
Exemplos:
$DEADBEEF
$B0DEFE10
$AD0BE
$0CAF0F0
Ponteiros
Um ponteiro é uma estrutura com 4 bytes, funcionando de forma similar a um número, no sentido que é possível efetuar operações aritméticas comuns (soma, subtração, etc).
Os endereços de memória são armazenados em ponteiros de 32 bits, de trás para frente (formato "big-endian"). Eles têm o mesmo intervalo dos números, porém todos os valores negativos não estão disponíveis para manipulação direta pois são usados pelo Windows. O endereço 0 é inválido e é denominado nulo ou inexistente. Você pode "anular" um ponteiro para torná-lo nulo.
Valores booleanos
Existem 2 valores booleanos:
sim
(valor 1) e não
(valor 0).
Eles têm 32 bits, mas apenas o bit mais à direita é usado. Na verdade, é o oitavo bit a partir da esquerda, mas você pode pensar nele como o mais à direita. O compilador interpreta 0 como “não” e 1 como “sim”. Você pode desativar um sinalizador para indicar "não" ou ativar um sinalizador para indicar "sim".
Valores escalares
Em certas situações, pode ser necessário criar um tipo cujo valor corresponde a um múltiplo de um tipo base. Por exemplo, sabemos que:
Um milissegundo é um número.
Na linha acima criamos um novo tipo, denominado milissegundo
, este sendo um derivado do tipo número
.
A partir daí, poderíamos criar todos os tipos derivados do tipo milissegundo
, como sendo derivados do mesmo. Exemplo:
Um segundo são 1000 milissegundos.
Um minuto são 60 segundos.
Uma hora são 60 minutos.
Um dia são 24 horas.
Já que definimos um segundo como sendo igual a 1000 milissegundos, cada vez que criarmos uma variável do tipo segundo
, o compilador automaticamente multiplicará o valor desta variável por 1000 quando tentarmos atribuíla com o tipo milissegundos
.
Atualizado
Isto foi útil?