Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

XOR IN EXCEL

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

XOR IN EXCEL

Postdi Ribonix » 22/02/09 11:15

Nei giorni scorsi ho avuto necessità di creare dei fogli di Excel privi di macro destinato a persone che non masticano il VBA. In particolare mi serviva effettuare una XOR tra due byte. Ho cercato principalmente su questo forum e ho cercato anche in giro un modo per riuscirci giacché ho scoperto che in Excel non era implementata tale funzione se non ricorrendo a macro.

Probabilmente ho scoperto l'acqua calda. Quello che segue è il frutto di un mio ragionamento e deduzione (ho usato qualche foglio di carta e una penna per arrivare alla soluzione) e quello che sono riuscito a pensare è una formula sicuramente un po' complessa ma funzionante. Ci tengo a condividerla con voi:
Codice: Seleziona tutto
=bin2dec(ASS(STRINGA.ESTRAI(dec2bin(X2;8);1;1)-STRINGA.ESTRAI(dec2bin(X3;8);1;1))&ASS(STRINGA.ESTRAI(dec2bin(X2;8);2;1)-STRINGA.ESTRAI(dec2bin(X3;8);2;1))&ASS(STRINGA.ESTRAI(dec2bin(X2;8);3;1)-STRINGA.ESTRAI(dec2bin(X3;8);3;1))&ASS(STRINGA.ESTRAI(dec2bin(X2;8);4;1)-STRINGA.ESTRAI(dec2bin(X3;8);4;1))&ASS(STRINGA.ESTRAI(dec2bin(X2;8);5;1)-STRINGA.ESTRAI(dec2bin(X3;8);5;1))&ASS(STRINGA.ESTRAI(dec2bin(X2;8);6;1)-STRINGA.ESTRAI(dec2bin(X3;8);6;1))&ASS(STRINGA.ESTRAI(dec2bin(X2;8);7;1)-STRINGA.ESTRAI(dec2bin(X3;8);7;1))&ASS(STRINGA.ESTRAI(dec2bin(X2;8);8;1)-STRINGA.ESTRAI(dec2bin(X3;8);8;1)))

Premetto che nelle celle X2 e X3 vanno inseriti dei valori compresi tra 0 e 255.
In pratica la formula trasforma i due valori in stringa binaria a 8 bit, effettua una sottrazione algebrica del bit n. 7 dei due valori, poi del n.6 e così via fino al bit n. 0. Dove si ottiene differenza 0 viene trascritto "0", dove ottengo 1 o -1, trascrivo il valore assoluto "1". Così viene effettuato per tutti gli 8 bit che comporranno il numero binario. Alla fine il tutto viene convertito in un numero in base 10.
Allah Akhbar! Allah Akhbar! Allah Akhbar!
Avatar utente
Ribonix
Utente Senior
 
Post: 346
Iscritto il: 12/02/03 22:41
Località: 3GYPT

Sponsor
 

Re: XOR IN EXCEL

Postdi Flash30005 » 22/02/09 17:21

:?:
Sbaglierò qualcosa, sicuramente per aver male interpretato le istruzioni, ma a me, con questa formula, da errore #NOME
del resto non capisco se bin2dec e dec2bin sia la versione inglese di office ma in questo caso non dovrebbe esserci STRINA.ESTRAI.
O forse si devono inserire dei componenti aggiuntivi che io non ho :roll:

Ho modificato la formula con i codici in italiano in questa maniera:
Codice: Seleziona tutto
=BINARIO.DECIMALE(ASS(STRINGA.ESTRAI(DECIMALE.BINARIO(X2;8);1;1)-STRINGA.ESTRAI(DECIMALE.BINARIO(X3;8);1;1))&ASS(STRINGA.ESTRAI(DECIMALE.BINARIO(X2;8);2;1)-STRINGA.ESTRAI(DECIMALE.BINARIO(X3;8);2;1))&ASS(STRINGA.ESTRAI(DECIMALE.BINARIO(X2;8);3;1)-STRINGA.ESTRAI(DECIMALE.BINARIO(X3;8);3;1))&ASS(STRINGA.ESTRAI(DECIMALE.BINARIO(X2;8);4;1)-STRINGA.ESTRAI(DECIMALE.BINARIO(X3;8);4;1))&ASS(STRINGA.ESTRAI(DECIMALE.BINARIO(X2;8);5;1)-STRINGA.ESTRAI(DECIMALE.BINARIO(X3;8);5;1))&ASS(STRINGA.ESTRAI(DECIMALE.BINARIO(X2;8);6;1)-STRINGA.ESTRAI(DECIMALE.BINARIO(X3;8);6;1))&ASS(STRINGA.ESTRAI(DECIMALE.BINARIO(X2;8);7;1)-STRINGA.ESTRAI(DECIMALE.BINARIO(X3;8);7;1))&ASS(STRINGA.ESTRAI(DECIMALE.BINARIO(X2;8);8;1)-STRINGA.ESTRAI(DECIMALE.BINARIO(X3;8);8;1)))

e ottengo un valore ma non so se è lo stesso risultato che si dovrebbe ottenere

Fai sapere
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: XOR IN EXCEL

Postdi Ribonix » 22/02/09 17:38

Per trasformare numeri decimali in binario, esadecimale e viceversa bisogna abilitare il componente aggiuntivo "Strumenti di analisi" accedendo dal menù "Strumenti" e sottomenù "Componenti aggiuntivi". Detto componente, nativo di Excel , fa in modo che l'istruzione, riportata nel mio precedente post, venga regolarmente interpretata.
Allah Akhbar! Allah Akhbar! Allah Akhbar!
Avatar utente
Ribonix
Utente Senior
 
Post: 346
Iscritto il: 12/02/03 22:41
Località: 3GYPT

Re: XOR IN EXCEL

Postdi Ribonix » 22/02/09 17:45

Io utilizzo Excel 2003 versione italiana e comunque entrambe le formule vengono accettate.
A compendio di quanto predetto se in X2 metti "65" e in X3 metti "70" deve darti come risposta 7... Se quello è il valore visualizzato, la formula funziona.
Allah Akhbar! Allah Akhbar! Allah Akhbar!
Avatar utente
Ribonix
Utente Senior
 
Post: 346
Iscritto il: 12/02/03 22:41
Località: 3GYPT

Re: XOR IN EXCEL

Postdi Anthony47 » 22/02/09 21:09

Le formule date funzionano, ma penso che funzioni ANCHE questa:
Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO(ASS(STRINGA.ESTRAI(DECIMALE.BINARIO(A1;8);RIF.RIGA(INDIRETTO("1:8"));1)-STRINGA.ESTRAI(DECIMALE.BINARIO(A2;8);RIF.RIGA(INDIRETTO("1:8"));1));2^(8-RIF.RIGA(INDIRETTO("1:8"))))

Dati di partenza in A2 e A3.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: XOR IN EXCEL

Postdi Ribonix » 22/02/09 22:34

Valida alternativa funzionante! Perlomeno la formula è più breve.
Poiché conosco pochissimo alcune delle funzioni che hai illustrato puoi darmi un breve dettaglio sul funzionamento della formula?
Ciao e Grazie!!!
Allah Akhbar! Allah Akhbar! Allah Akhbar!
Avatar utente
Ribonix
Utente Senior
 
Post: 346
Iscritto il: 12/02/03 22:41
Località: 3GYPT

Re: XOR IN EXCEL

Postdi Anthony47 » 23/02/09 15:48

Ho usato il "cuore" della tua istruzione [ASS(STRINGA.ESTRAI(DECIMALE.BINARIO(X2;8);1;1)-STRINGA.ESTRAI(DECIMALE.BINARIO(X3;8);1;1))] inserendola in modo recursivo in una MATRICE (matr 1 di Matr.Somma.Prodotto), usando invece che "1", "2" etc la matrice 1, 2, 3, .. 8 restituita dalla formula RIF.RIGA(INDIRETTO("1:8").
Come seconda matrice ho inserito 2^0, 2^1, etc, in modo da dare il "giusto peso" al singolo bit.
Ho pubblicato varie soluzioni basate sull' uso di una matrice restituita dalla combinazione RIF.RIGA(INDIRETTO, in genere nella versione RIF.RIGA(INDIRETTO("1:"&LUNGHEZZA(A1))); se hai pazienza e curiosita' fai una ricerca con google con la chiave "Rif.riga(indiretto(" site:pc-facile.com (comprese le virgolette).

Spero di essere stato comprensibile...
Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: XOR IN EXCEL

Postdi Ribonix » 23/02/09 19:52

Comprensibilissimo e ti ringrazio. Anzi sei andato nella direzione delle mie aspettative.
In effetti conosco quasi per nulla gli argomenti "matrice" e "indiretto".
Il postare il mio messaggio era indirettamente un chiedere se qualcuno, in questo caso tu, avesse conoscenza di un metodo alternativo.
E' sempre bello imparare cose nuove!!! :lol:
Allah Akhbar! Allah Akhbar! Allah Akhbar!
Avatar utente
Ribonix
Utente Senior
 
Post: 346
Iscritto il: 12/02/03 22:41
Località: 3GYPT


Torna a Applicazioni Office Windows


Topic correlati a "XOR IN EXCEL":


Chi c’è in linea

Visitano il forum: Anthony47 e 11 ospiti