Newsgroup: it.comp.lang.visual-basic
Titolo: Elevamento a potenza in binario...

Date due stringhe S1 e S2 (di almeno 1500-2000 bit ciascuna) che
rappresentano un numero in formato bimario,
come posso eseguire l'elevamento a potenza di S1^S2?
Ovviamente vorrei evitare di convertire in decimale i valori...
Grazie per i suggerimenti.-

 wrote in message
news:433e87cb$0$23962$
4faf...@reader3.news.tin.it

In Binario il prodotto di un Numero per N è una somma del
numero stesso eseguita N volte(fortunatamente non solo in binario).
Dato che l'elevazione a potenza è un prodotto di questo tipo...
Se vuoi farlo in binario ha da fare un bel lavoretto il BinCode
non prevede il Prodotto(che io sappia).
@Alex 
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio 
news:433e87cb$0$23962$4faf...@reader3.news.tin.it...


 Emiliano.
Già.
S1="10010010111010.....101010001110"
LEN(S1)=2000

 non prevede il Prodotto(che io sappia).
Funziona solo per valori molto bassi di S2...
E googlando un po in giro non mi sembra vi sia una soluzione + rapida.
Altre idee?

 LEN(S1)=2000
Hai due STRINGHE che contengono la rappresentazione binaria
di un numero (2000 caratteri) e vuoi fare l'elevamento a
potenza fra le due. Ho capito bene?
Lokar
-- 
Sito Comune: 
http://www.it-lang-vb.net/
Manifesto: 
http://www.it-lang-vb.net/docs/Manifesto.txt
Statuto: 
http://www.it-lang-vb.net/docs/Statuto.txt
 

 wrote in message
news:433f195b$0$6332$
4faf...@reader2.news.tin.it

Hai provato a vedere che razza di numero salta fuori...?
Hai dichiarato correttamente le variabili da usare..?
Che io sappia non ci sono altri sistemi se vuoi rimanere in binario.
Al limite scomponilo in numeri da 16Bit e poi ricomponi.


 potenza fra le due. Ho capito bene?
Esatto.

 Al limite scomponilo in numeri da 16Bit e poi ricomponi.
Questa puņ essere una buona idea, se sapessi come attuarla...
Avendo:
 S1="10101000111001...." (64 bit)
 S1_a=... 16 bit
 S1_b=... 16 bit
 S1_c=... 16 bit
 S1_d=... 16 bit
 tale che S1=S1_a & S1_b & S1_c & S1_d
 S2="10101000111001...." (64 bit)
 S2_a=... 16 bit
 S2_b=... 16 bit
 S2_c=... 16 bit
 S2_d=... 16 bit
tale che S2=S2_a & S2_b & S2_c & S2_d
Conoscendo S1_a^S2_a, S1_b^S2_b, S1_c^S2_c e S1_c^S2_c...
come trovo S1^S2= ????
PS: a parte che 16 bit^16 bit č gią un bel numerino non facilmente gestibile
in VB!!!

Genetic Prime wrote:

conosco una libreria:
MKB Arbitrary Precision Number Library (APNL)
le licenze costano ben: 25$ l'una
puoi proverla per 30 gg
HTH
bye
r


my2cents
convertili in decimale
fai quello che vuoi
trovato il numero
RAPPRESENTALO in binario
a dirlo è più lento che farlo...e anche la velocità non credere sia un
disastro!
i numeri son numeri....cambia solo il formato!
Se non ti basta la precisione del VB trovi molte librerie per andare oltre i
limiti (inferiori e superiori) di VB
...a quel punto probabilmente non userai neanche il decimale...ma
l'esadecimale!
esempi ne trovi mille in rete
in forma di ddl o di codice
...solo codice
piccoli esempi
http://www.vb-fun.de/cgi-bin/loadframe.pl?ID=vb/tipps/tip0211.shtml
esistono poi dll specifiche per sommare grandi numeri o fare il prodotto
la via migliore IMHO è davvero fare tutto in decimale o esadecimale e poi
rappresentare con un semplice ciclo il numero come sequenza di 0 o 1!!!
Non vedo però l'utilità di ciò....
ossia se hai SOLTANTO rappresentazioni in binario....convertili in
(esa)decimale no?
L'unica cosa che mi viene in mente....
hai bit perchè ogni bit rappresenta un "semaforo" di qualcosa....(uno
scambio di un treno, una valvola aperta o chiusa,una presenza lavorativa etc
etc)
oppure stai spippolando con la criptografia ma allora ti ci vorranno anche
shift di bit ed amenità del genere no?
Escluderei la grafica perchè oramai parliamo di byte se non word per
rappresentare un punto ed i suoi colori!
son curioso...che stai facendo???

 son curioso...che stai facendo???
Grazie per gli utili suggerimenti.
Nessun segreto sull'utilizzo: niente semafori, niente criptografia, niente
grafica.
La stringa rappresenta una forma primitiva di DNA di un individuo utilizzato
per la ricerca (attraverso algoritmi genetici) di sequenze di numeri primi.
L'evoluzione tende a far crescere la lunghezza del DNA perchè crea individui
"migliori"... ed in effetti la cosa funziona, ma si scontra con la limitata
capacità del
mio PC. :-)
L'intenzione era di far cresce la stringa il + possibile, quindi credo che
la conversione
sia una strada limitante... 2^5.000bit in decimale è oltre 1,4 * 10^1505.
Speravo di arrivare a 20-30.000 bit per ogni DNA... :-(
E sulle stringhe devo poter eseguire oltre alle semplici AND,OR,NOT,XOR
anche
operazioni complesse tipo l'elevamento a potenza.
Ciao.-
PS: per problemi tecnici non potrò ripondere ai messaggi da Lun 3 a Ven 7.

 Ven 7.
Allora....calma e gesso!
Sulle stringhe non fai quelle operazioni!
Il tipo di dato stringa è una rappresentazione per un carattere!
Secondo la guida di visual basic anche le stringhe non sono infinite
ci memorizzi da 1 a "circa 65.400" caratteri!
quindi non puoi fare a$="111011" + "111001" perchè bene che ti vada ottieni
"111011111001"!!!
La strada per sommare numeri così grandi è un altra e tuttora in fermento
(pensa ad esempio a chi sta calcolando tutte le infinite(?fino a prova
contraria?)cifre del 3.14)
una possibile soluzione è
simulare il comportamento di noi scolaretti elementari che
sommiamo...riportando le cifre sulla dita etc etc
un link che tratta SOLO numeri interi è
http://www.developerfusion.co.uk/show/4670/
hai addizione sottrazione moltiplicazione divisione
...
quindi anche la potenza come sequenza di moltiplicazione!
ma scusa a che ti serve il binario non capisco!
Un DNA non ha 4 basi: adeninia tiamina guanina citosina?
non ti serve una aritmetica in base 4???
ma forse stai cercando i numeri primi e non c'entra nulla la biologia???
stai  cercando di vincere il premio????
100.000 dollari! fiuuuuuuuuuuu!
http://www.mclink.it/personal/MC5225/mersenne/prime-it.htm
non puoi usare il loro programma ???

 ci memorizzi da 1 a "circa 65.400" caratteri!
Solo per le stringhe a lunghezza fissa. A lunghezza variabile, arrivi
a "circa 2 miliardi" di caratteri.
Bye, G.

 ha scritto nel messaggio 
news:433e87cb$0$23962$4faf...@reader3.news.tin.it...



.....
per tutti quelli che non lo sanno....
Aggiungo al minestrone qualche paginetta spaccacervello (...almeno per me
che avevo uno striminzito 6 in matematica)!
http://www.matematicamente.it/numeri/
sul l'algoritmo genetico in generale
http://it.wikipedia.org/wiki/Algoritmo_genetico
http://alpha01.dm.unito.it/personalpages/cerruti/studenti/Pisani/INDICE.html
e sulla combinazione con il VB (volutamente codice pubblico....spendendo
trovate un sacco di Activex e/o Dll)
http://www.pscode.com/vb/scripts/ShowCode.asp?txtCodeId=36178&lngWId=1
http://www.pscode.com/vb/scripts/ShowCode.asp?txtCodeId=35979&lngWId=1
 (Gli
indiani......!)
l'amico c'ha pure un sito
http://www.paraschopra.com/tutorials/ga/index.php