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, 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:

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".

Atualizado