সহজ। আপনার সংখ্যাটি 2 ^ বিট নাম্বারের সাথে তুলনা করতে কিছুটা বিছিন্নভাবে এবং ব্যবহার করুন যা বিট-শিফটিংয়ের মাধ্যমে সস্তাভাবে গণনা করা যেতে পারে।
var bit = (b & (1 << bitNumber-1)) != 0;
সম্পাদনা: আরও কিছু বিশদ যুক্ত করতে কারণ অনেকগুলি অনুরূপ উত্তর রয়েছে যার ব্যাখ্যা নেই:
কিছুটা বিটওয়াস এবং প্রতিটি সংখ্যার বিট-বিট করে তুলনা করে একটি এ্যান্ড যোগ করে এমন একটি সংখ্যা তৈরি করতে বিটগুলির সংমিশ্রণ যেখানে place জায়গায় প্রথম বিট এবং দ্বিতীয় বিট উভয়ই সেট করা হয়েছিল। এখানে একটি "নিবললে" এবং লজিকের লজিক ম্যাট্রিক্সটি কিছুটা দিকের পরিচালনা দেখায় এবং:
0101
& 0011
----
0001
আপনার ক্ষেত্রে, আমরা সংখ্যায় এমন একটি সংখ্যার সাথে তুলনা করি যা আপনি সেট দেখতে চান কেবল বিট থাকে। ধরা যাক আপনি চতুর্থ বিটটি খুঁজছেন:
11010010
& 00001000
--------
00000000
11011010
& 00001000
--------
00001000
বিট-শিফটিং, আমরা যে সংখ্যার সাথে তুলনা করতে চাই তার উত্পাদন করতে, যা ঠিক মনে হয় তা হ'ল: সংখ্যাটি নিন, বিটের সেট হিসাবে উপস্থাপন করুন এবং সেই বিটগুলি বাম বা ডানকে নির্দিষ্ট স্থানে স্থানান্তর করুন। কারণ এটি বাইনারি সংখ্যা এবং সুতরাং প্রতিটি বিট তার ডানদিকে একটির চেয়ে বড় দুটি-এর চেয়ে বড়, বামে বিট-স্থানান্তর করা প্রতিটি স্থানের জন্য একবারে সংখ্যাটি দ্বিগুণ করার সমান, সংখ্যাটি দ্বারা গুণিত করার সমান 2 ^ x আপনার উদাহরণে, চতুর্থ বিটের সন্ধানে আমরা সম্পাদন করি:
1 (2^0) << (4-1) == 8 (2^3)
00000001 << (4-1) == 00001000
এটি এখন কীভাবে হয়েছে, নিম্ন স্তরে কী চলছে এবং কেন এটি কাজ করে তা আপনি জানেন।
var bit = (b & (1 << bitNumber-1)) != 0;