Facile. Utilisez un AND au sens du bit pour comparer votre nombre avec la valeur 2^bitNumber, qui peut être calculée à peu de frais en décalant des bits.
//your black magic
var bit = (b & (1 << bitNumber-1)) != 0;
EDIT : Pour ajouter un peu plus de détails car il y a beaucoup de réponses similaires sans explication :
Un ET binaire compare chaque nombre, bit par bit, à l'aide d'une jointure ET pour produire un nombre qui est la combinaison de bits où le premier bit et le deuxième bit à cet endroit ont tous deux été activés. Voici la matrice logique de la logique ET dans un "nibble" qui montre le fonctionnement d'un ET bit à bit :
0101
& 0011
----
0001 //Only the last bit is set, because only the last bit of both summands were set
Dans votre cas, nous comparons le nombre que vous avez passé avec un nombre qui n'a que le bit que vous voulez rechercher. Disons que vous cherchez le quatrième bit :
11010010
& 00001000
--------
00000000 //== 0, so the bit is not set
11011010
& 00001000
--------
00001000 //!= 0, so the bit is set
Le décalage de bits, pour produire le nombre auquel nous voulons comparer, est exactement ce qu'il semble être : prendre le nombre, représenté comme un ensemble de bits, et décaler ces bits vers la gauche ou la droite d'un certain nombre de positions. Étant donné qu'il s'agit de nombres binaires et que chaque bit est une puissance de deux supérieure à celle du bit à sa droite, le décalage des bits vers la gauche équivaut à doubler le nombre une fois pour chaque place décalée, ce qui revient à multiplier le nombre par 2^x. Dans votre exemple, en cherchant le quatrième bit, on effectue :
1 (2^0) << (4-1) == 8 (2^3)
00000001 << (4-1) == 00001000
Vous savez maintenant comment cela se passe, ce qui se passe à bas niveau, et pourquoi cela fonctionne.