Qual é a melhor maneira de representar arbitrariamente grandes números em c?

StackOverflow https://stackoverflow.com/questions/619764

  •  03-07-2019
  •  | 
  •  

Pergunta

Eu estou trabalhando em um projeto que me obriga a trabalhar com números maiores do que o maior tipo de dados numérico no c. Eu estava pensando em usar estruturas com campos de bits para representar isso, mas ele já está cheirando mal. Alguém tem alguma dica? (Não à procura de uma biblioteca, mais de um processo de pensamento para ir atrás de fazer algo assim.)

Foi útil?

Solução

Eu sugiro que primeiro check-out a biblioteca Bignum GNU MP.

Se o licenciamento é um problema que você tem que rolar o seu próprio. A minha primeira escolha para o tipo de dados seria uma matriz simples de caracteres não assinados juntamente com alguns dados extras para denotar o quão grande essa matriz é.

Algo parecido com isto:

typedef struct 
{
  unsigned char * NumberData;
  size_t          AllocatedSize;
} MyBigNum;

deve ser suficiente.

Outras dicas

O Bignum biblioteca GNU MP seria minha primeira escolha.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top