স্ট্রিং হিসাবে আমাদের একটি হেক্সাডেসিমেল সংখ্যা দেওয়া হয়েছে; কাজটি হল এটিকে অক্টালে রূপান্তর করা। একটি হেক্সাডেসিমেল সংখ্যাকে অক্টালে রূপান্তর করতে, আমাদের −
করতে হবে- হেক্সাডেসিমেল সংখ্যার সমতুল্য বাইনারি খুঁজুন।
- বাইনারী সংখ্যাকে অক্টালে রূপান্তর করুন।
হেক্সাডেসিমেল সংখ্যা কি
হেক্সাডেসিমেল সংখ্যা হল সেই সংখ্যা যেগুলি 16 এর ভিত্তির সংখ্যাগুলি 0-9 এর মধ্যে পরিবর্তিত হয় এবং 10 এর পর থেকে সংখ্যাগুলি A হিসাবে উপস্থাপিত হয় যা 10 এর জন্য B, 11 এর জন্য C, 12 এর জন্য D, 13 এর জন্য E, 14 এর জন্য E এবং F। 15 এর জন্য।
হেক্সাডেসিমেল সংখ্যাকে বাইনারি সংখ্যায় রূপান্তর করতে প্রতিটি সংখ্যাকে তার 4 বিটের বাইনারি সমতুল্য রূপান্তর করা হয় এবং তারপরে এই সংখ্যাগুলিকে একত্রিত করে একটি সংশ্লিষ্ট বাইনারি সংখ্যা তৈরি করা হয়।
অক্টাল সংখ্যা কি
কম্পিউটারে অক্টাল সংখ্যাগুলিকে ভিত্তি 8 দিয়ে উপস্থাপন করা হয়, যা 0-7 অক্টাল সংখ্যাগুলি তিনটি বাইনারি সংখ্যা বা তিনটি বাইনারি সংখ্যার গ্রুপিং দ্বারা তৈরি করা হয়৷
আমাদের যা করতে হবে
যেমন আমাদের একটি হেক্সাডেসিমেল সংখ্যা 1A6 আছে তাই এর অর্থ এখন 1, 10 এবং 6 হেক্সাডেসিমেল থেকে অক্টালের জন্য প্রথমে আমাদের একটি হেক্সাডেসিমেল সংখ্যার বাইনারি সমতুল্য খুঁজে বের করতে হবে অর্থাৎ,

সুতরাং, 1A6 এর বাইনারি =0001 1010 0110
এখন হেক্সাডেসিমেল সংখ্যার বাইনারি খুঁজে বের করার পর এখন পরবর্তী কাজ হল বাইনারি সংখ্যার অক্টাল বের করা।
তার আগে আমরা বাইনারি সংখ্যাকে তিনটিতে গ্রুপ করব। 3 তে গ্রুপ করার পরে আমরা পাব 000 110 100 110
যার অক্টাল প্রতিনিধিত্ব হবে −

সুতরাং হেক্সাডেসিমেল সংখ্যা 1A6 এর অক্টাল উপস্থাপনা হল − 646
উদাহরণ
Input: 1A6 Output: Octal Value = 646 Explanation: Input: 1AA Output: 652
প্রদত্ত সমস্যার সমাধান করার জন্য আমরা যে পদ্ধতি ব্যবহার করব −
- ইনপুট নেওয়া এবং একটি স্ট্রিং হিসাবে সংরক্ষণ করা।
- নিম্নলিখিত পদ্ধতি অনুসরণ করে হেক্সাডেসিমেল সংখ্যা বা রাশিকে বাইনারিতে রূপান্তর করুন -
- হেক্সাডেসিমেলের 16টি ক্ষেত্রেই তাদের নিজ নিজ বাইনারি উপস্থাপনা যোগ করে চেক করুন।
- ফলাফল ফেরত দিন।
- বাইনারি সংখ্যাকে অক্টাল সংখ্যায় রূপান্তর করুন নিম্নলিখিত ধাপগুলি অনুসরণ করুন −
- বাইনারি সংখ্যার সম্ভাব্য সকল ক্ষেত্রে অক্টালের সাথে তুলনা করে ৩টি স্থান নিন।
- অক্টাল =(ভাল * স্থান) + অক্টালের মান সেট করুন;
- বাইনারী সংখ্যাকে 1000 দ্বারা ভাগ করুন
- স্থান *=10
- ফলাফল ফেরত দিন।
অ্যালগরিদম
Start
Step 1-> In function long long int hexa_binary(char hex[])
Declare variables binary, place
Declare and initialize i = 0, rem, val
Initialize t n = strlen(hex)
Initialize binary = 0ll and place = 0ll
Loop For i = 0 and hex[i] != '\0' and 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;
// convert HexaDecimal to Binary
binary = hexa_binary(hex);
// convert Binary to Octal
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>
//To convert hex to binary first
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;
}
//To convert binary to octal
long long int binary_oct(long long binary) {
long long int octal, place;
int i = 0, rem, val;
octal = 0ll;
place = 0ll;
place = 1;
// giving all binary numbers for octal conversion
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;
}
// to convert the hexadecimal number to octal
long long int hexa_oct(char hex[]) {
long long int octal, binary;
// convert HexaDecimal to Binary
binary = hexa_binary(hex);
// convert Binary to Octal
octal = binary_oct(binary);
return octal;
}
//main function
int main() {
char hex[20] = "5CD";
printf("Octal Value = %lld", hexa_oct(hex));
return 0;
} আউটপুট
Octal Value = 2715