আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি সংখ্যা নেয় এবং এটি দুইটির শক্তি কিনা তা নির্ধারণ করে।
উদাহরণস্বরূপ -
f(23) = false f(16) = true f(1) = true f(1024) = true
পন্থা -
বাইনারি আকারে দুটির শক্তির সর্বদা মাত্র একটি বিট থাকে। এই মত -
1: 0001 2: 0010 4: 0100 8: 1000
অতএব, সংখ্যাটি শূন্যের চেয়ে বড় কিনা তা পরীক্ষা করার পরে, আমরা একটি বিটওয়াইজ হ্যাক ব্যবহার করে পরীক্ষা করতে পারি যে এক এবং শুধুমাত্র একটি বিট সেট করা আছে। একই নিচে দেখানো হয়েছে -
num & (num - 1)
উদাহরণ
নিম্নলিখিত কোড -
const num1 = 256; const num2 = 1024; const isPowerOfTwo = (num = 1) => { if (num < 1) { return false; }; return (num & (num - 1)) === 0; }; console.log(isPowerOfTwo(num1)); console.log(isPowerOfTwo(num2)); console.log(isPowerOfTwo(1)); console.log(isPowerOfTwo(23));
আউটপুট
নিম্নোক্ত কনসোলে আউটপুট -
true true true false