La potenza degli operatori binari
di
Marita Rizzi
Data di pubblicazione: 21/07/2003
Voto della community: 4,33
(Votanti: 11)
Gli operatori (AND OR XOR e i loro corispondenti & | ^) nascono per confrontare due espressioni, ma, sfruttando la loro applicazione su variabili di tipo numerico, possiamo migliorare gestione e scalabilitá della nostra base dati e rendere piú leggibile il codice.
Teoria
Il principio di funzionamento si basa sul fatto che gli operatori logici, su variabili di tipo numerico, eseguono il confronto dei due operandi su singolo bit occupante la medesima posizione (confronto bit a bit). Detto cosí puó sembrare molto complesso, ma un piccolo esempio puó essere chiarificatore:
prendiamo la rappresentazione binaria del numero 17: 1 0 0 0 1 e quella del numero 16: 1 0 0 0 0 se si esegue il confronto bit a bit il risultato é true come mostrato in figura 1 (presentano 1 nella medesima posizione). ![]() Figura 1.
In Visual Basic e in ASP la sintassi utilizzata per l'operatore booleano é AND (in javascript e nelle stored procedure di SqlServer é &). Nel nostro esempio precedente, in ASP, avremmo scritto: (17 AND 16) = true (17 AND 8) = false N.B.: le parentesi sono necessarie altrimenti il test viene eseguito sull'uguaglianza. Pratica
Utilizzando le potenze di 2, é quindi possibile gestire piú casistiche con un solo parametro di passaggio ed una serie di if indipendenti.
Poniamo il caso di dover gestire un sondaggio sui gusti degli utenti. Nel nostro database avremo una tabella gusti come mostrato in figura 2. ![]() Figura 2.
Senza l'utilizzo degli operatori binari, saremmo costretti ad inserire nella nostra tabella preferenze_utente un campo booleano per ogni gusto, con la conseguenza di dover aggiungere un campo al database ogni qualvolta vogliamo inserire un nuovo gusto (figura 3). ![]() Figura 3.
Con l'utlizzo degli operatori binari ci basterá un solo campo numerico contenente la somma algebrica dei gusti scelti (figura 4). ![]() Figura 4.
Nella tabella di figura 4 l'idUtente 1 ha come gusti: Telefonia (1) + Computer (2) + Multimedia (4) = 7, l'idUtente 2 ha come gusti: sport (32) + viaggi (64) = 96. Se vogliamo interrogare il database sui gusti di un determinato utente scriveremo:
<% Conclusioni
Ad un primo impatto, questo modo di gestire i dati, puó sembrare ostico, ma se ci soffermiamo a riflettere su quante applicazioni utilizzano giá gli operatori binari, ci rendiamo immediatamente conto di quali siano le potenzialitá applicative di questo sistema.
Ne é un esempio la gestione degli attributi, sia dell'oggetto field del recordset (chiave primaria, campo annullabile, ecc.), che degli oggetti del FileSystemObject. Se si osservano i valori assunti dalla proprietá attributes del FileSystemObject, si noterá che sono potenze in base 2.
Per testare se un file é contemporaneamente nascosto e di sistema, si puó quindi fare:
<% Considerazioni finali
Gli operatori binari possono avere svariate applicazioni nella gestione dei dati.
Vale la pena di capire quando e come strutturare i dati con questa logica affinché si possa ricorrere ad un sistema semplice ed efficiente di gestione.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||