Documentação
  • Bem-vindo
  • Biblioteca Padrão
  • Características da linguagem
  • Comentários
  • Declaração e inicialização de variáveis
    • Inferência automática de tipos
  • Tipos de dados
    • Valores numéricos
    • Estruturas e Uniões de dados
      • Acessando os valores dos campos de estruturas
    • Strings e caracteres
      • Subtextos
      • Percorredores
    • Listas duplamente vinculadas
    • Conversão de tipos
  • Laços e Desvios condicionais
    • Lidando com vazamentos de memória em laços
  • Operadores
    • Precedência e Ordem de avaliação de operadores
  • Rotinas, Parâmetros e Funções
  • Trabalhando com Bibliotecas externas
  • Trabalhando com Instruções Hexadecimais
  • Callbacks
  • Introduzindo as palavras-chave "Preserve" e "original"
  • Usando a preposição "de"
  • Cores
  • Gráficos de Tartaruga (Turtle Graphics)
  • Algoritmos de Exemplo
    • Olá Mundo
    • A + B
    • Agenda Telefônica
    • Animação de sprites
    • Fatorial
    • 100 Portas
    • Dó Ré Mi Fá
    • API Win32 - GdipImageRotateFlip
    • Pintando como Claude Monet
    • Exemplo de interface
    • Evitando problemas de cintilação (Flickering)
    • Desenhando e pintando retângulos e caixas
    • Cofrinho Virtual
Fornecido por GitBook
Nesta página
  • Bytes
  • Words (Palavras)
  • Números inteiros
  • Números fracionários
  • Números mistos
  • Valores Hexadecimais
  • Ponteiros
  • Valores booleanos
  • Valores escalares

Isto foi útil?

Editar no GitLab
  1. Tipos de dados

Valores numéricos

AnteriorTipos de dadosPróximoEstruturas e Uniões de dados

Atualizado há 11 dias

Isto foi útil?

A linguagem trabalha com os seguintes valores numéricos:

Bytes são valores numéricos que ocupam 8 de memória. Bytes e são um 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.

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

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.

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

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ávelpor 1000 quando tentarmos atribuíla com o tipo milissegundos.

Devido às particularidades da arquitetura Windows/Intel x86, os bits em cada um dos bytes da word são armazenados na forma "" (da esquerda para a direita), porém os bytes em si são armazenados de forma inversa (ou seja, na forma "").

Os números são armazenados de trás para frente (de acordo com o formato "") devido à dos processadores x86.

Os endereços de memória são armazenados em ponteiros de 32 bits, de trás para frente (formato ""). 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.

little-endian
big endian
big-endian
extremidade (ordenação)
big-endian
Bytes
bits
estruturas
tipo de dado primitivo
Words
Números inteiros;
Números fracionários;
Números mistos;
Valores hexadecimais;
Ponteiros;
Valores booleanos.
Demonstração do armazenamento Little-endian vs Big-endian
Bytes