Differenze tra le versioni di "Conoscere di un numero la posizione del primo bit da destra impostato a 1"
Da Gambas-it.org - Wikipedia.
(Una versione intermedia di uno stesso utente non è mostrata) | |||
Riga 4: | Riga 4: | ||
==Uso delle sole risorse di Gambas== | ==Uso delle sole risorse di Gambas== | ||
− | Mostriamo un semplice esempio con il numero | + | Mostriamo un semplice esempio con il numero 8192: |
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
− | Dim | + | Dim e, l As Long |
− | + | ||
+ | l = 8192 | ||
+ | Print Bin(l, 64) | ||
− | + | While True | |
+ | If (CInt(2 ^ e) And l) > 0 Then Break | ||
+ | Inc e | ||
+ | Wend | ||
− | + | Inc e | |
− | + | Print "Il primo bit da destra posto a 1 è nella "; e; "^ posizione." | |
− | |||
− | |||
'''End''' | '''End''' | ||
− | |||
− | |||
− | |||
Versione attuale delle 03:36, 14 feb 2017
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) While True If (CInt(2 ^ e) And l) > 0 Then Break Inc e Wend Inc e Print "Il primo bit da destra posto a 1 è nella "; e; "^ posizione." End
Uso della funzione ffs() della libreria esterna "/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