Differenze tra le versioni di "Porre a 0 oppure a 1 un bit di un numero"
Da Gambas-it.org - Wikipedia.
(Creata pagina con "==Porre a Uno un bit== Per porre a '''1''' il bit di un valore numerico, possiamo usare l'operatore "OR", come segue: '''Public''' Sub Main() Dim i, bit, ris As Integer...") |
|||
Riga 41: | Riga 41: | ||
==Porre a Zero un bit== | ==Porre a Zero un bit== | ||
− | Se, invece, si vuole porre a '''0''' un bit di un numero, possiamo usare l'operatore " | + | Se, invece, si vuole porre a '''0''' un bit di un numero, possiamo usare l'operatore "AND", come segue: |
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
Riga 55: | Riga 55: | ||
<FONT Color=gray>' ''Con l'operatore "AND" pone a '''0''' l'ottavo bit del valore iniziale da modificare:''</font> | <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> | + | ris = i <FONT Color=#B22222><B>And</b></font> bit |
Print Bin(ris, 32) | Print Bin(ris, 32) | ||
Versione attuale delle 11:47, 20 set 2022
Porre a Uno un bit
Per porre a 1 il bit di un valore numerico, possiamo usare l'operatore "OR", come segue:
Public Sub Main() Dim i, bit, ris As Integer ' Valore iniziale: i = 888 Print Bin(i, 32) ' Individua il valore simile a quello iniziale, ma avente il solo ottavo bit posto a 1: bit = 128 Print Bin(bit, 32), "<-----" ' Con l'operatore "OR" pone a 1 l'ottavo bit del valore iniziale da modificare: ris = i Or bit Print Bin(ris, 32) ' Verifica il risultato, ossia il valore iniziale come modificato: 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 ' Valore iniziale: i = 888 ' Del valore iniziale pone a 1 l'ottavo bit (indice 0 - 31): bit = 7 ris = i Or (1 * CInt(2 ^ bit)) ' oppure così: ris = i Or Shl(1, CInt(bit)) Print ris End
Porre a Zero un bit
Se, invece, si vuole porre a 0 un bit di un numero, possiamo usare l'operatore "AND", come segue:
Public Sub Main() Dim i, bit, ris As Integer ' Valore iniziale: i = 1016 Print Bin(i, 32) ' Individua il valore simile a quello iniziale, ma avente il solo ottavo bit posto a 0: bit = 888 Print Bin(bit, 32), "<-----" ' Con l'operatore "AND" pone a 0 l'ottavo bit del valore iniziale da modificare: ris = i And bit Print Bin(ris, 32) ' Verifica il risultato, ossia il valore iniziale come modificato: 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 ' Valore iniziale: i = 65535 ' Del valore iniziale pone a 0 il nono bit (indice 0 - 31): bit = 8 ris = i And (-1 Xor (1 * CInt(2 ^ bit))) Print ris End