Differenze tra le versioni di "Porre a 0 oppure a 1 un bit di un numero"

Da Gambas-it.org - Wikipedia.
 
Riga 1: Riga 1:
 
==Porre a Uno un bit==
 
==Porre a Uno un bit==
 
Per porre a '''1''' il bit di un valore numerico, possiamo usare l'operatore "OR", come segue:
 
Per porre a '''1''' il bit di un valore numerico, possiamo usare l'operatore "OR", come segue:
   '''Public''' Sub Main()
+
   Public Sub Main()
 
   
 
   
 
   Dim i, bit, ris As Integer
 
   Dim i, bit, ris As Integer
Riga 20: Riga 20:
 
   Print ris
 
   Print ris
 
   
 
   
  '''End'''
+
  End
 
oppure adottare il seguente codice (per valori non superiori a 32 bit):
 
oppure adottare il seguente codice (per valori non superiori a 32 bit):
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim i, ris As Integer
 
   Dim i, ris As Integer
Riga 37: Riga 37:
 
   Print ris
 
   Print ris
 
    
 
    
  '''End'''
+
  End
  
  
 
==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 "AND", 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()
 
   
 
   
 
   Dim i, bit, ris As Integer
 
   Dim i, bit, ris As Integer
Riga 61: Riga 61:
 
   Print ris
 
   Print ris
 
   
 
   
  '''End'''
+
  End
 
oppure il seguente codice (per valori non superiori a 32 bit):
 
oppure il seguente codice (per valori non superiori a 32 bit):
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim i, ris As Integer
 
   Dim i, ris As Integer
Riga 78: Riga 78:
 
   Print ris
 
   Print ris
 
   
 
   
  '''End'''
+
  End

Versione attuale delle 16:57, 1 lug 2024

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