Como trabalhar com inteiros grandes?

Delphi

17/10/2004

Eu proeciso trabalhar com inteiros maiores que int64 e que não estejam na forma exponencial, algo como int128 ou int256; alguém tem alguma idéia?


Edilcimar

Edilcimar

Curtidas 0

Respostas

Ricardo.vano

Ricardo.vano

17/10/2004

Olá,

Você tentou usar LongInt ?


GOSTEI 0
Fórum Vini

Fórum Vini

17/10/2004

Olá, Você tentou usar LongInt ?

O tipo LongInt é de 32bits, ele precisa de muito mais que isso :lol:

Você pode declarar seu próprio tipo Int128:
type
  Int128 = $00000000000000..$FFFFFFFFFFFFFF;

Depois crie suas variáveis normalmente:
var
 I: Int128;

Para o Int256 não sei como você pode fazer, pois o Delphi não aceita tipos com 8 bytes.. Também não sei como ficará o desempenho do tipo Int128, talvez fique muito lento.. :roll:
Eu sabia de um site que abordava inteiros de 128bits, vou ver se acho ele nos meus guardados e te falo :wink:

Espero ter ajudado,
Vinicius;


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

17/10/2004

veja se [url=http://www.latiumsoftware.com/br/pascal/0045.php]este artigo [/url] lhe ajuda em algo. veja o item 5.


GOSTEI 0
Afarias

Afarias

17/10/2004

Você pode declarar seu próprio tipo Int128:
type
  Int128 = $00000000000000..$FFFFFFFFFFFFFF;


1) $FFFFFFFFFFFFFF não representa de forma alguma um inteiro de 128bits, na verdade, é ainda menor q um inteiro do 64bits

2) é ´impossível´ representar ou manipular inteiros maiores de 64bits na arquitetura atual dos PCs (x86) -- isso não é uma limitação do Delphi, apenas dos processadores domésticos atuais

bom, se vc precisa realmente de inteiros maiores q 64bits terá de partir para outras soluções, exemplo::

definir um Int128 como um array de 4 possições contendo inteiros de 32 bits (4x32=128), mas ai vc terá de definir tb as operações como soma, multiplicação, etc...



T+


GOSTEI 0
Edilcimar

Edilcimar

17/10/2004

1)Não dá, tem que ser número maior que 10 elevado a 100 pois é para criptografia RSA, ou seja eu tenho que gerar os primos nesta ordem.
2)SE não dá para utilizar, como é que tem gente utilizando?


GOSTEI 0
Afarias

Afarias

17/10/2004

2)SE não dá para utilizar, como é que tem gente utilizando?


com soluções como a mostrada no Artigo sugerido pelo emerson.en



T+


GOSTEI 0
Edilcimar

Edilcimar

17/10/2004

E uma pergunta idiota, o meu computador leva 8 min para calcular os primos até 1 milhão, como as pessoas estão calculando-os até 10 elevado a 100? Isto leva mais de 1 mês!


GOSTEI 0
Gandalf.nho

Gandalf.nho

17/10/2004

Geralmente esse tipo de cálculo usa supercomputadores ou clusters...


GOSTEI 0
Edilcimar

Edilcimar

17/10/2004

Só que infelizmente nem todo mundo pode ter um Cray num ´cantinho´ da casa, então deve haver outro tipo de solução pois tem pessoas fazendo este tipo de cálculo com um micro


GOSTEI 0
Fórum Vini

Fórum Vini

17/10/2004

1) $FFFFFFFFFFFFFF não representa de forma alguma um inteiro de 128bits, na verdade, é ainda menor q um inteiro do 64bits

:oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops:
Putz, falei bobagem nessa né? :roll:
Na verdade eu pensei em 2^7 mas acabei criando foi uma combinação de 2^( 7*8 ) bits..foi isso?
O inteiro de 128 bits seria então 2^128 combinações diferentes de bits? :shock:
Corrigindo então:
type
  Int56 = $00000000000000..$FFFFFFFFFFFFFF

:lol: :oops:

Desculpa pelo fora, só tentei ajudar :roll: :roll:


GOSTEI 0
Afarias

Afarias

17/10/2004

|então deve haver outro tipo de solução pois tem pessoas fazendo este
|tipo de cálculo com um micro

por curiosidade,

qual seu computador e como está calculando?
o que exatamente vc deseja?
que pessoas são essas?
e, ´elas´ fazem esses famigerados cálculos com 1 micro 32bits doméstico é? não é processamento distribuido?



T+


GOSTEI 0
Edilcimar

Edilcimar

17/10/2004

Eu quero calcular números primos na ordem de 10 elevado a 100 ou mais para efetuar algorítmo de criptografia RSA, e tenho um P4, quanto as pessoas que fazem estes cálculos são aquelas quer criam criptografia de 1024, 2048 bits


GOSTEI 0
Bruno Belchior

Bruno Belchior

17/10/2004

no pascal existe um tipo chamado extended (extendido) que é o maior tipo possível interpretado pelo computador, vc tem que habilitá-lo (no pascal) para funcionar, pois ele é processado diretamente no processador... não sei se ele existe no delphi mas vale a pena tentar vê-lo apesar que nunca vi falar sobre ele em delphi...


GOSTEI 0
Paulo_amorim

Paulo_amorim

17/10/2004

Olá

Há, sim, pessoas calculando números primos maiores que 10^100, mas normalmente isso eh feito em supercomputadores ou, como agora está mais comum, fazem uso de vários computadores domésticos, formando uma rede de processamento (como disse o afarias, processamento distribuido)

Fazer isso em um só PC, ainda mais um que você está usando, eh muito difícil que se faça em menos de 1 dia

Até+


GOSTEI 0
POSTAR