Visual Basic Simple
Informazioni aggiuntive sull'estrazione bit a bit
Sincronizza Indice
Sincronizza Indice
Scarica il progetto
Scarica il progetto
Scarica il testo dell'articolo
Testo dell'articolo
Stampa l'articolo
Stampa l'articolo

All'interno di Visual Basic esistono varie funzioni che restituiscono un numero intero rappresentante più stati di un determinato elemento.

Un esempio lampante è la funzione GetAttr che restituisce un numero intero i cui bit indicano lo stato dei diversi attributi del file.

Il numero restituito da GetAttr contiene 7 bit fondamentali; per trovare i singoli attributi del file basta estrarli uno per uno tramite un paragone AND bit a bit. Questi 7 bit indicano:

Bit Valore Costante Rappresentazione Funzione
1 1 vbReadOnly 0000 0001 Sola lettura
2 2 vbHidden 0000 0010 Nascosto
3 4 vbSystem 0000 0100 Di sistema
4 8 vbVolume 0000 1000 Volume (non utilizzato)
5 16 vbDirectory 0001 0000 Directory (cartella)
6 32 vbArchive 0010 0000 Archivio
7 64 vbAlias 0100 0000 Alias (non utilizzato)

Facciamo un esempio pratico: Valore = GetAttr("C:\IO.SYS")
Dopo quest'operazione la variabile Valore conterrà il numero intero 7. Da sè questo numero non rappresenta alcun bit di stato visto sopra. È necessario effettuare un'estrazione bit a bit. Effettuiamo queste semplici operazioni di AND:

Valore AND vbReadOnly      Risultato: 1  (vbReadOnly)
Valore AND vbHidden        Risultato: 2  (vbHidden)
Valore AND vbSystem        Risultato: 4  (vbSystem)
Valore AND vbVolume        Risultato: 0
Valore AND vbDirectory     Risultato: 0
Valore AND vbArchive       Risultato: 0
Valore AND vbAlias         Risultato: 0

Questo avviene perché l'operatore AND restituisce il valore TRUE solo quando i bit impostati a 1 del primo numero hanno un corrispondente bit impostato a 1 nel secondo numero.
Vediamo in numeri quanto abbiamo detto, subito dopo aver convertito il numero decimale 7 in un numero a base binaria. Il valore 7 diventa per cui 00000111.

  1. 0000 0111 (7) AND
    0000 0001 (vbReadOnly) =
    ---------
    0000 0001 (vbReadOnly - Il file è di sola lettura)

  2. 0000 0111 (7) AND
    0000 0010 (vbHidden) =
    ---------
    0000 0010 (vbHidden - Il file è nascosto)

  3. 0000 0111 (7) AND
    0000 0100 (vbSystem) =
    ---------
    0000 0100 (vbSystem - Il file è di sistema)

  4. 0000 0111 (7) AND
    0000 1000 (vbVolume) =
    ---------
    0000 0000 (Non è un Volume)

  5. 0000 0111 (7) AND
    0001 0000 (vbDirectory) =
    ---------
    0000 0000 (Non è una Directory)

  6. 0000 0111 (7) AND
    0010 0000 (vbArchive) =
    ---------
    0000 0000 (Stato di archivio non impostato)

  7. 0000 0111 (7) AND
    0100 0000 (vbAlias) =
    ---------
    0000 0000 (Il file non è un Alias)

In Visual Basic ci sono molte funzioni che agiscono in tal modo: raggruppando in un solo numero lo stato di più valori.

Fibia FBI
13 Dicembre 2000

Scarica il progetto
Scarica il progetto
Scarica il testo dell'articolo
Scarica il testo dell'articolo
Stampa l'articolo
Stampa l'articolo