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

সি প্রোগ্রাম দিয়ে বাইনারি নম্বরের ট্রেলিং এবং লিডিং জিরো কাউন্ট করা

ট্রেলিং জিরো (Trailing Zeros)

LSB (লীস্ট সিগনিফিক্যান্ট বিট) থেকে প্রথম '১' পাওয়া পর্যন্ত 존재하는 συνεχিত শূন্যের সংখ্যা।

উদাহরণ

দশমিক ১০৪ = বাইনারি 1101000 (MSB ... LSB)
LSB থেকে: 0, 0, 0, 1 → প্রথম '১' পাওয়া পর্যন্ত ৩টি শূন্য।
ট্রেলিং জিরো = 3

লিডিং জিরো (Leading Zeros)

MSB (মোস্ট সিগনিফিক্যান্ট বিট) থেকে প্রথম '১' পাওয়া পর্যন্ত არსিত শূন্যের সংখ্যা।

উদাহরণ

দশমিক ৯৪ = বাইনারি ...001011110 (৩২-বিট ইন্টিজারে)
MSB থেকে প্রথম '১' পাওয়া পর্যন্ত ২৫টি শূন্য।
লিডিং জিরো = 25

সি প্রোগ্রাম: ট্রেলিং জিরো কাউন্ট

#include <stdio.h>
#include <stdlib.h>

int main() {
    int num, trail = 0;
    int size = sizeof(int) * 8; // 32 bits typically

    printf("Enter a number: ");
    scanf("%d", &num);

    for (int i = 0; i < size; i++) {
        if ((num >> i) & 1) // i-th bit চেক
            break;
        trail++;
    }

    printf("Trailing zeros = %d\n", trail);
    return 0;
}

আউটপুট

Enter a number: 24
Trailing zeros = 3

সি প্রোগ্রাম: লিডিং জিরো কাউন্ট

#include <stdio.h>
#include <stdlib.h>

int main() {
    int num, lead = 0;
    int size = sizeof(int) * 8;
    int msb = 1 << (size - 1); // MSB মাস্ক

    printf("Enter a number: ");
    scanf("%d", &num);

    for (int i = 0; i < size; i++) {
        if ((num << i) & msb) // লেফট শিফট করে MSB চেক
            break;
        lead++;
    }

    printf("Leading zeros = %d\n", lead);
    return 0;
}

আউটপুট

Enter a number: 94
Leading zeros = 25

বিল্ট-ইন ফাংশন (GCC/Clang এক্সটেনশন)

// GCC/Clang বিল্ট-ইন (অনসাইনড ইন্টিজারের জন্য)
int n = 24;
int tz = __builtin_ctz(n);  // Count Trailing Zeros = 3
int lz = __builtin_clz(n);  // Count Leading Zeros  = 28 (32-bit)

// লং লং এর জন্য
long long x = 24;
int tz = __builtin_ctzll(x);
int lz = __builtin_clzll(x);

সতর্কতা: ইনপুট ০ হলে আচরণ অনির্ধারিত (undefined)।

সারসংক্ষেপ

  • ট্রেলিং জিরো: LSB থেকে প্রথম ১ পর্যন্ত শূন্য।
  • লিডিং জিরো: MSB থেকে প্রথম ১ পর্যন্ত শূন্য।
  • বিটওয়াইজ শিফট (>>, <<) এবং মাস্ক দিয়ে কাউন্ট করা যায়।
  • কম্পাইলার বিল্ট-ইন ব্যবহার করলে খুব দ্রুত ও সহজ।
  1. পাইথনে ১ থেকে k পর্যন্ত সব সংখ্যা দিয়ে ভাগ্যোগ্য ন্যূনতম সংখ্যার ট্রেইলিং জিরো গণনা

  2. ফ্যাক্টোরিয়ালে ট্রেইলিং জিরোর সংখ্যা গণনা করার পাইথন প্রোগ্রাম

  3. কনসিকিউটিভ ১ ছাড়া বাইনারি স্ট্রিংয়ের সংখ্যা গণনা করার পাইথন প্রোগ্রাম

  4. পাইথনে একটি সংখ্যার টোটাল বিট গণনা করার প্রোগ্রাম