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 3: | Riga 3: | ||
In entrambe le modalità seguenti se il numero è zero, ossia se nessun bit è impostato a 1, sarà restituito: zero. | 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 66: | Mostriamo un semplice esempio con il numero 66: | ||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
Riga 25: | Riga 24: | ||
− | ==Uso della funzione ''ffs()'' della libreria esterna | + | ==Uso della funzione ''ffs()'' della libreria esterna "''/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" |
Versione delle 04:18, 19 lug 2016
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 66:
Public Sub Main() Dim bi As String Dim n, i As Integer n = 66 bi = Bin(n) i = Len(bi) - (RInStr(bi, "1") - 1) if n = 0 then i = 0 Print i End
La rappresentazione binaria del numero 66 è la seguente: 01000010; pertanto il primo bit a destra impostato ad 1 è il secondo.
Infatti il risultato del predetto esempio restituisce: 2.
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