Sottrazione con operatori bitwise

Da Gambas-it.org - Wikipedia.

Il codice per operare una sottrazione con operatori bitwise fra due numeri, considerati come fossero binari, va impostato in modo tale che innanzitutto effettui lo XOR fra i due operandi; poi deve eseguire il NOT bitwise del primo operando. Infine deve effettuare l'AND fra i due operandi, e uno shift a sinistra.


Mostriamo il codice esemplificativo:

Public Sub Main()
 
 Dim minuendo, sottraendo, differenza As Integer
 
   minuendo = 240
   sottraendo = 15
  
   differenza = sottrazione_binaria(minuendo, sottraendo)
   
   Print differenza
  
End


Private Function sottrazione_binaria(op1 As Integer, op2 As Integer) As Integer
 
 Dim sb, prestito As Integer
 
  prestito = 1
 
  While prestito <> 0
       sb = op1 Xor op2
       op1 = Not op1
       prestito = op1 And op2
       prestito = prestito * CInt(2 ^ 1)
       op1 = sb
       op2 = prestito
  Wend
  
  Return op1
 
End