Si j'ai un certain entier n, et je veux savoir la position du bit le plus significatif (qui est, si le bit le moins significatif est sur la droite, je veux savoir la position la plus à gauche bit à 1), ce qui est le plus rapide/la plus efficace méthode de recherche?
Je sais que POSIX prend en charge un ffs()
méthode dans les chaînes.h pour trouver le premier ensemble de bits, mais il ne semble pas être une correspondante fls()
méthode.
Est-il vraiment un moyen évident de faire ce que je suis absent?
Qu'en est-il des cas où vous ne pouvez pas utiliser les fonctions POSIX pour la portabilité?
Edit: à propos d'une solution qui fonctionne sur les versions 32 bits et 64 bits des architectures (beaucoup d'exemples de code semble comme s'ils avaient seulement le travail sur 32 bits ints).