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 "OR", come segue:
+
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>Or</b></font> bit
+
   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