|
|
Riga 1: |
Riga 1: |
− | Per porre a 1 il bit di un valore numerico, possiamo usare l'operatore "OR", come segue:
| + | #REDIRECT [[Porre a 0 oppure a 1 un bit di un numero]] |
− | '''Public''' Sub Main()
| |
− |
| |
− | Dim i, bit, ris As Integer
| |
− |
| |
− | <FONT Color=gray>' ''Valore iniziale:''</font>
| |
− | i = 888
| |
− | Print Bin(i, 32)
| |
− |
| |
− | <FONT Color=gray>' ''Individua il valore simile a quello iniziale, ma avente il solo ottavo bit posto a 1:''</font>
| |
− | bit = 128
| |
− | Print Bin(bit, 32), "<-----"
| |
− |
| |
− | <FONT Color=gray>' ''Con l'operatore "OR" pone a '''1''' l'ottavo bit del valore iniziale da modificare:''</font>
| |
− | ris = i <FONT Color=#B22222><B>Or</b></font> bit
| |
− | Print Bin(ris, 32)
| |
− |
| |
− | <FONT Color=gray>' ''Verifica il risultato, ossia il valore iniziale come modificato:''</font>
| |
− | Print ris
| |
− |
| |
− | '''End'''
| |
− | oppure adottare il seguente codice (per valori non superiori a 32 bit):
| |
− | '''Public''' Sub Main()
| |
− |
| |
− | Dim i, ris As Integer
| |
− | Dim bit As Byte
| |
− |
| |
− | <FONT Color=gray>' ''Valore iniziale:''</font>
| |
− | i = 888
| |
− |
| |
− | <FONT Color=gray>' ''Del valore iniziale pone a 1 l'ottavo bit (indice 0 - 31):''</font>
| |
− | bit = 7
| |
− |
| |
− | ris = i Or (1 * CInt(2 ^ bit)) <FONT Color=gray>' ''oppure così: '''ris = i Or Shl(1, CInt(bit))'''''</font>
| |
− |
| |
− | Print ris
| |
− |
| |
− | '''End'''
| |
− | | |
− | | |
− | ===Porre a zero un bit===
| |
− | Se, invece, si vuole porre a zero un bit di un numero, possiamo usare l'operatore "OR", come segue:
| |
− | '''Public''' Sub Main()
| |
− |
| |
− | Dim i, bit, ris As Integer
| |
− |
| |
− | <FONT Color=gray>' ''Valore iniziale:''</font>
| |
− | i = 1016
| |
− | Print Bin(i, 32)
| |
− |
| |
− | <FONT Color=gray>' ''Individua il valore simile a quello iniziale, ma avente il solo ottavo bit posto a 0:''</font>
| |
− | bit = 888
| |
− | Print Bin(bit, 32), "<-----"
| |
− |
| |
− | <FONT Color=gray>' ''Con l'operatore "AND" pone a '''0''' l'ottavo bit del valore iniziale da modificare:''</font>
| |
− | ris = i <FONT Color=#B22222><B>Or</b></font> bit
| |
− | Print Bin(ris, 32)
| |
− |
| |
− | <FONT Color=gray>' ''Verifica il risultato, ossia il valore iniziale come modificato:''</font>
| |
− | Print ris
| |
− |
| |
− | '''End'''
| |
− | oppure il seguente codice (per valori non superiori a 32 bit):
| |
− | '''Public''' Sub Main()
| |
− |
| |
− | Dim i, ris As Integer
| |
− | Dim bit As Byte
| |
− |
| |
− | <FONT Color=gray>' ''Valore iniziale:''</font>
| |
− | i = 65535
| |
− |
| |
− | <FONT Color=gray>' ''Del valore iniziale pone a 0 il nono bit (indice 0 - 31):''</font>
| |
− | bit = 8
| |
− |
| |
− | ris = i And (-1 Xor (1 * CInt(2 ^ bit)))
| |
− |
| |
− | Print ris
| |
− |
| |
− | '''End'''
| |