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

C প্রোগ্রাম: হেক্সাডেসিমাল থেকে অক্ট্যালে রূপান্তর

একটি হেক্সাডেসিমাল নম্বর স্ট্রিং আকারে দেওয়া থাকে; টাস্ক হলো তা অক্ট্যালে রূপান্তর করা। হেক্সাডেসিমাল থেকে অক্ট্যালে রূপান্তর করতে হলে −

  • হেক্সাডেসিমাল নম্বরের বাইনারি সমতুল্য খুঁজে বের করতে হবে।
  • বাইনারি নম্বরটিকে অক্ট্যালে রূপান্তর করতে হবে।

হেক্সাডেসিমাল নম্বর কী?

হেক্সাডেসিমাল নম্বর হলো বেস ১৬-এর নম্বর যেখানে নম্বরগুলো ০-৯ এবং ১০ থেকে আপরে A (১০), B (১১), C (১২), D (১৩), E (১৪), F (১৫) হিসেবে রিপ্রেজেন্ট করা হয়।

হেক্সাডেসিমাল নম্বরকে বাইনারি নম্বরে রূপান্তর করতে প্রতিটি নম্বরকে এর ৪ বিটের বাইনারি সমতুল্যে রূপান্তর করে সেগুলো একসাথে जोড়া দিয়ে একটি বাইনারি নম্বর তৈরি করা হয়।

অক্ট্যাল নম্বর কী?

কম্পিউটারে অক্ট্যাল নম্বর বেস ৮ দিয়ে রিপ্রেজেন্ট করা হয়, যা ০-৭ পর্যন্ত থাকে। অক্ট্যাল নম্বর তিনটি বাইনারি নম্বর বা তিনটি বাইনারি ডিজিটের গ্রুপিং দিয়ে তৈরি হয়।

আমাদের কী করতে হবে

যেমন হেক্সাডেসিমাল নম্বর 1A6 আছে মানে ১, ১০ এবং ৬। হেক্সাডেসিমাল থেকে অক্ট্যালে রূপান্তরের জন্য প্রথমে হেক্সাডেসিমাল নম্বরের বাইনারি সমতুল্য বের করতে হবে, অর্থাৎ

C প্রোগ্রাম: হেক্সাডেসিমাল থেকে অক্ট্যালে রূপান্তর

তাহলে 1A6-এর বাইনারি = 0001 1010 0110

এখন হেক্সাডেসিমাল নম্বরের বাইনারি পাওয়া গেলে পরবর্তী টাস্ক হলো বাইনারি নম্বরটির অক্ট্যাল বের করা।

এর আগে বাইনারি নম্বরকে তিন দিয়ে গ্রুপ করব। তিন দিয়ে গ্রুপ করলে পাব 000 110 100 110

যার অক্ট্যাল রিপ্রেজেন্টেশন হবে −

C প্রোগ্রাম: হেক্সাডেসিমাল থেকে অক্ট্যালে রূপান্তর

সুতরাং হেক্সাডেসিমাল নম্বর 1A6-এর অক্ট্যাল রিপ্রেজেন্টেশন হলো − 646

উদাহরণ

ইনপুট: 1A6 আউটপুট: Octal Value = 646
ব্যাখ্যা: ইনপুট: 1AA আউটপুট: 652

দেওয়া সমস্যা সমাধানের জন্য আমরা যে পদ্ধতি ব্যবহার করব −

  • ইনপুট নেয়া এবং স্ট্রিং আকারে স্টোর করা।
  • হেক্সাডেসিমাল নম্বর বা এক্সপ্রেশনকে বাইনারিতে রূপান্তর করা নিচের পদ্ধতিতে −
    • হেক্সাডেসিমালের সব ১৬ কেস চেক করে তাদের বাইনারি রিপ্রেজেন্টেশন যোগ করা।
    • রেজাল্ট রিটার্ন করা।
  • বাইনারি নম্বরকে অক্ট্যাল নম্বরে রূপান্তর করা নিচের ধাপগুলোতে −
    • ৩ দিয়ে গ্রুপ করে বাইনারি নম্বরের সব পসিবল কেস অক্ট্যালে তুলনা করা।
    • octal = (val * place) + octal সেট করা।
    • বাইনারি নম্বর ১০০০ দিয়ে ভাগ করা।
    • place *= 10
  • রেজাল্ট রিটার্ন করা।

অ্যালগরিদম

Start
ধাপ ১ → function long long int hexa_binary(char hex[]) এ
  binary, place ভেরিয়েবল ডিক্লেয়ার
  i = 0, rem, val ডিক্লেয়ার ও ইনিশিয়ালাইজ
  n = strlen(hex) ইনিশিয়ালাইজ
  binary = 0ll এবং place = 0ll ইনিশিয়ালাইজ
  লুপ: i = 0; hex[i] != '\0'; i++ {
    binary = binary * place;
    switch (hex[i]) {
      case '0': binary += 0
      case '1': binary += 1
      case '2': binary += 10
      case '3': binary += 11
      case '4': binary += 100
      case '5': binary += 101
      case '6': binary += 110
      case '7': binary += 111
      case '8': binary += 1000
      case '9': binary += 1001
      case 'a': case 'A': binary += 1010
      case 'b': case 'B': binary += 1011
      case 'c': case 'C': binary += 1100
      case 'd': case 'D': binary += 1101; break;
      case 'e': case 'E': binary += 1110; break;
      case 'f': case 'F': binary += 1111; break;
      default: printf("Invalid hexadecimal input.");
    }
    place = 10000;
  }
  return binary;
}
long long int binary_oct(long long binary) {
  long long int octal, place;
  int i = 0, rem, val;
  octal = 0ll;
  place = 0ll;
  place = 1;
  while (binary > 0) {
    rem = binary % 1000;
    switch (rem) {
      case 0: val = 0; break;
      case 1: val = 1; break;
      case 10: val = 2; break;
      case 11: val = 3; break;
      case 100: val = 4; break;
      case 101: val = 5; break;
      case 110: val = 6; break;
      case 111: val = 7; break;
    }
    octal = (val * place) + octal;
    binary /= 1000;
    place *= 10;
  }
  return octal;
}
long long int hexa_oct(char hex[]) {
  long long int octal, binary;
  // হেক্সাডেসিমালকে বাইনারিতে রূপান্তর
  binary = hexa_binary(hex);
  // বাইনারিকে অক্ট্যালে রূপান্তর
  octal = binary_oct(binary);
  return octal;
}
int main() {
  char hex[20] = "1a99";
  printf("Octal Value = %lld", hexa_oct(hex));
  return 0;
}

উদাহরণ

#include <stdio.h>
#include <string.h>
#include <math.h>
// হেক্সকে বাইনারিতে রূপান্তর
long long int hexa_binary(char hex[]) {
    long long int binary, place;
    int i = 0, rem, val;
    int n = strlen(hex);
    binary = 0ll;
    place = 0ll;
    for (i = 0; hex[i] != '\0'; i++) {
        binary = binary * place;
        switch (hex[i]) {
        case '0': binary += 0; break;
        case '1': binary += 1; break;
        case '2': binary += 10; break;
        case '3': binary += 11; break;
        case '4': binary += 100; break;
        case '5': binary += 101; break;
        case '6': binary += 110; break;
        case '7': binary += 111; break;
        case '8': binary += 1000; break;
        case '9': binary += 1001; break;
        case 'a': case 'A': binary += 1010; break;
        case 'b': case 'B': binary += 1011; break;
        case 'c': case 'C': binary += 1100; break;
        case 'd': case 'D': binary += 1101; break;
        case 'e': case 'E': binary += 1110; break;
        case 'f': case 'F': binary += 1111; break;
        default: printf("Invalid hexadecimal input.");
        }
        place = 10000;
    }
    return binary;
}
// বাইনারিকে অক্ট্যালে রূপান্তর
long long int binary_oct(long long binary) {
    long long int octal, place;
    int i = 0, rem, val;
    octal = 0ll;
    place = 0ll;
    place = 1;
    // অক্ট্যাল কনভার্সনের জন্য সব বাইনারি নম্বর
    while (binary > 0) {
        rem = binary % 1000;
        switch (rem) {
        case 0: val = 0; break;
        case 1: val = 1; break;
        case 10: val = 2; break;
        case 11: val = 3; break;
        case 100: val = 4; break;
        case 101: val = 5; break;
        case 110: val = 6; break;
        case 111: val = 7; break;
        }
        octal = (val * place) + octal;
        binary /= 1000;
        place *= 10;
    }
    return octal;
}
// হেক্সাডেসিমাল নম্বরকে অক্ট্যালে রূপান্তর
long long int hexa_oct(char hex[]) {
    long long int octal, binary;
    // হেক্সাডেসিমালকে বাইনারিতে রূপান্তর
    binary = hexa_binary(hex);
    // বাইনারিকে অক্ট্যালে রূপান্তর
    octal = binary_oct(binary);
    return octal;
}
// main ফাংশন
int main() {
    char hex[20] = "5CD";
    printf("Octal Value = %lld", hexa_oct(hex));
    return 0;
}

আউটপুট

Octal Value = 2715

  1. গ্রে কোডকে বাইনারি কোডে রূপান্তর করার পাইথন প্রোগ্রাম

  2. পাইথন প্রোগ্রাম দিয়ে দশমিক সংখ্যাকে বাইনারি নম্বরে রূপান্তর

  3. পাইথনে ফ্লোটিং পয়েন্টকে বাইনারি কনভার্ট করা

  4. পাইথনে ডেসিমেলকে বাইনারি, অক্টাল ও হেক্সাডেসিমেলে কনভার্ট করা