Conoscere di un numero la posizione del primo bit da destra impostato a 1
Da Gambas-it.org - Wikipedia.
Versione del 19 lug 2016 alle 04:18 di Vuott (Discussione | contributi)
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