Differenze tra le versioni di "Conoscere di un numero la posizione del primo bit da destra impostato a 1"
Da Gambas-it.org - Wikipedia.
(Creata pagina con "Per conoscere di un numero la posizione del primo bit da destra impostato a 1, è possibile utilizzare la funzione ''ffs()'' della libreria esterna di C: ''/usr/include/string...") |
|||
Riga 1: | Riga 1: | ||
− | Per conoscere di un numero la posizione del primo bit da destra impostato a 1, è possibile utilizzare | + | 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: 010000<FONT Color=B22222>1</font>0; pertanto il primo bit a destra impostato ad 1 è il secondo. | ||
+ | <BR>Infatti il risultato del predetto esempio restituisce: 2. | ||
+ | |||
+ | |||
+ | |||
+ | ==Uso della funzione ''ffs()'' della libreria esterna di C: ''/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 17: | Riga 39: | ||
'''End''' | '''End''' | ||
− | |||
− |
Versione delle 16:01, 15 ott 2015
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 di C: /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