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:
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:
Números mistos
Um número misto é composto de um número, um traço e uma fração sem sinal. Exemplos:
1-1/2
-2-2/3
3-3/4
Abaixo temos a implementação de números mistos:
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".
Atualizado