Kolay. Sayınızı 2 ^ bitNumber değeriyle karşılaştırmak için bitsel AND kullanın; bu, bit kaydırma ile ucuz bir şekilde hesaplanabilir.
var bit = (b & (1 << bitNumber-1)) != 0;
DÜZENLEME: Biraz daha fazla ayrıntı eklemek için, çünkü açıklaması olmayan birçok benzer yanıt var:
Bitsel AND, o yerdeki hem birinci bitin hem de ikinci bitin ayarlandığı bitlerin birleşimi olan bir sayı üretmek için bir VE birleşimini kullanarak her sayıyı bit bit karşılaştırır. İşte AND mantığının mantık matrisi, bitsel AND'nin işleyişini gösteren bir "yarım baytta":
0101
& 0011
----
0001
Sizin durumunuzda, geçtiğiniz sayıyı sadece aramak istediğiniz biti içeren bir sayı ile karşılaştırıyoruz. Dördüncü kısmı aradığınızı varsayalım:
11010010
& 00001000
--------
00000000
11011010
& 00001000
--------
00001000
Karşılaştırmak istediğimiz sayıyı üretmek için bit kaydırma, kulağa tam olarak benzeyen şeydir: bir bit kümesi olarak gösterilen sayıyı alın ve bu bitleri belirli sayıda yer kadar sola veya sağa kaydırın. Bunlar ikili sayılar olduğundan ve bu nedenle her bit, sağındaki birinden ikinin bir büyük üssü olduğundan, sola bit kaydırma, kaydırılan her yer için sayının bir kez ikiye katlanmasına eşdeğerdir; 2 ^ x. Örneğinizde dördüncü biti ararken şunları gerçekleştiriyoruz:
1 (2^0) << (4-1) == 8 (2^3)
00000001 << (4-1) == 00001000
Artık nasıl yapıldığını, düşük seviyede neler olduğunu ve neden işe yaradığını biliyorsunuz.
var bit = (b & (1 << bitNumber-1)) != 0;