কম্পিউটার টিউটোরিয়াল

সংখ্যার নিকটতম ২-এর ঘাত বের করা - JavaScript

একটি সংখ্যার নিকটতম ২-এর ঘাতক lignin (2ⁿ) বের করা।

উদাহরণ

365 → 256 (2⁸ = 256, 2⁹ = 512)
145 → 128 (2⁷ = 128, 2⁸ = 256)

সমাধান

const nearestPowerOfTwo = (num) => {
  // নেগেটিভ হ্যান্ডলিং
  num = Math.abs(num);
  
  // ০ বা ১ এর জন্য
  if (num <= 1) return 1;
  
  // বিট অপারেশন ব্যবহার করে (সবচেয়ে দ্রুত)
  // পরবর্তী ২-এর ঘাত বের করুন
  let power = 1;
  while (power < num) {
    power <<= 1; // power *= 2
  }
  
  // পূর্ববর্তী ২-এর ঘাত
  const prevPower = power >> 1; // power / 2
  
  // কোনটি নিকটতম?
  return (num - prevPower <= power - num) ? prevPower : power;
};

// আরও সংক্ষিপ্ত (বিট ট্রিক)
const nearestPowerOfTwoBit = (num) => {
  num = Math.abs(num);
  if (num <= 1) return 1;
  
  // nächste 2^n বের করুন
  const nextPow = 1 << (32 - Math.clz32(num - 1));
  const prevPow = nextPow >> 1;
  
  return (num - prevPow <= nextPow - num) ? prevPow : nextPow;
};

// টেস্ট
console.log(nearestPowerOfTwo(365));  // 256
console.log(nearestPowerOfTwo(145));  // 128
console.log(nearestPowerOfTwo(100));  // 128 (100-64=36, 128-100=28)
console.log(nearestPowerOfTwo(10));   // 8

বিট অপারেশন ব্যাখ্যা

  • x << n: x × 2ⁿ (বাম শিফট)
  • x >> n: x ÷ 2ⁿ (ডান শিফট)
  • Math.clz32(): লিডিং জিরোর সংখ্যা (৩২-বিট)

উৎপাদন

256
  1. জাভাস্ক্রিপ্টে একটি নম্বরের সর্বোচ্চ ডিজিট খুঁজে বের করা

  2. জাভাস্ক্রিপ্টে সংখ্যাকে অক্ষরে রূপান্তর করুন

  3. জাভাস্ক্রিপ্টে সংখ্যাকে নিকটতম ১০-এর ঘাতে রাউন্ড ডাউন করা

  4. জাভাস্ক্রিপ্টে সংখ্যা ফ্যাক্টরাইজ করা