Differenze tra le versioni di "Conoscere di un numero la posizione del primo bit da destra impostato a 1"

Da Gambas-it.org - Wikipedia.
 
Riga 5: Riga 5:
 
==Uso delle sole risorse di Gambas==
 
==Uso delle sole risorse di Gambas==
 
Mostriamo un semplice esempio con il numero 8192:
 
Mostriamo un semplice esempio con il numero 8192:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
  Dim e, l As Long
+
  Dim e, l As Long
 
    
 
    
 
   l = 8192
 
   l = 8192
 
   Print Bin(l, 64)
 
   Print Bin(l, 64)
 
    
 
    
   While True
+
   Do
 
     If (CInt(2 ^ e) And l) > 0 Then Break
 
     If (CInt(2 ^ e) And l) > 0 Then Break
 
     Inc e
 
     Inc e
   Wend
+
   Loop
 
    
 
    
 
   Inc e
 
   Inc e
Riga 21: Riga 21:
 
   Print "Il primo bit da destra posto a 1 è nella "; e; "^ posizione."
 
   Print "Il primo bit da destra posto a 1 è nella "; e; "^ posizione."
 
    
 
    
  '''End'''
+
  End
  
  
==Uso della funzione ''ffs()'' della libreria esterna "''/usr/include/strings.h''"==
+
==Uso della funzione esterna "ffs()" dichiarata nel file header ''/usr/include/strings.h''==
 
Mostriamo un semplice esempio con il numero 66:
 
Mostriamo un semplice esempio con il numero 66:
 
  Library "libc:6"
 
  Library "libc:6"
Riga 33: Riga 33:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Print ffs(66)
 
   Print ffs(66)
 
    
 
    
  '''End'''
+
  End

Versione attuale delle 15:59, 1 lug 2024

Per conoscere di un numero la posizione del primo bit da destra impostato a 1, è possibile utilizzare almeno due modalità.

In entrambe le modalità seguenti se il numero è zero, ossia se nessun bit è impostato a 1, sarà restituito: zero.

Uso delle sole risorse di Gambas

Mostriamo un semplice esempio con il numero 8192:

Public Sub Main()

  Dim e, l As Long
 
  l = 8192
  Print Bin(l, 64)
  
  Do
    If (CInt(2 ^ e) And l) > 0 Then Break
    Inc e
  Loop
  
  Inc e
  
  Print "Il primo bit da destra posto a 1 è nella "; e; "^ posizione."
  
End


Uso della funzione esterna "ffs()" dichiarata nel file header /usr/include/strings.h

Mostriamo un semplice esempio con il numero 66:

Library "libc:6"

' int ffs (int __i)
' Return the position of the first bit set in 1, or 0 if none are set.
Private Extern ffs(i As Integer) As Integer


Public Sub Main()
 
  Print ffs(66)
  
End