Einfach. Verwenden Sie ein bitweises UND, um Ihre Zahl mit dem Wert 2 ^ bitNumber zu vergleichen, der durch Bitverschiebung kostengünstig berechnet werden kann.
//your black magic
var bit = (b & (1 << bitNumber-1)) != 0;
EDIT: Um ein wenig mehr Details hinzuzufügen, da es viele ähnliche Antworten ohne Erklärung gibt:
Ein bitweises UND vergleicht jede Zahl bitweise mit einem UND-Join, um eine Zahl zu erzeugen, die die Kombination von Bits darstellt, bei denen sowohl das erste Bit als auch das zweite Bit an dieser Stelle gesetzt wurden. Hier ist die Logikmatrix der UND-Logik in einem "Halbbyte", die die Funktionsweise eines bitweisen UND zeigt:
0101
& 0011
----
0001 //Only the last bit is set, because only the last bit of both summands were set
In Ihrem Fall vergleichen wir die übergebene Nummer mit einer Nummer, die nur das Bit enthält, nach dem Sie suchen möchten. Angenommen, Sie suchen nach dem vierten Bit:
11010010
& 00001000
--------
00000000 //== 0, so the bit is not set
11011010
& 00001000
--------
00001000 //!= 0, so the bit is set
Bitverschiebung, um die Zahl zu erzeugen, mit der wir vergleichen möchten, ist genau das, wonach es sich anhört: Nehmen Sie die Zahl, die als Satz von Bits dargestellt wird, und verschieben Sie diese Bits um eine bestimmte Anzahl von Stellen nach links oder rechts. Da es sich um Binärzahlen handelt und jedes Bit eine größere Zweierpotenz als das rechts davon ist, entspricht eine Bitverschiebung nach links einer einmaligen Verdoppelung der Zahl für jede verschobene Stelle, was einer Multiplikation der Zahl mit entspricht 2 ^ x. In Ihrem Beispiel suchen wir nach dem vierten Bit:
1 (2^0) << (4-1) == 8 (2^3)
00000001 << (4-1) == 00001000
Jetzt wissen Sie, wie es gemacht wird, was auf niedriger Ebene vor sich geht und warum es funktioniert.
var bit = (b & (1 << bitNumber-1)) != 0.