تحويل الأعداد من النظام السداسي عشر إلى النظام الثنائي
تحوّل هذه الخوارزمية العدد المعطى من النظام السداسي عشر (الأساس 16) إلى النظام الثنائي (الأساس 2).
مثال:
Input: Hexadecimal = 1AC5
Output: Binary = 0001101011000101
توضيح:
القيمة الثنائية المكافئة للعدد 1: 0001
القيمة الثنائية المكافئة للعدد A: 1010
القيمة الثنائية المكافئة للعدد C: 1100
القيمة الثنائية المكافئة للعدد 5: 0101
Input: Hexadecimal = 5D1F
Output: Binary = 0101110100011111
خطوات الخوارزمية
النظام السداسي عشر هو نظام أعداد موقعي Positional numeral system يكون فيه الجذر أو الأساس هو 16 ويستخدم 16 رمزًا لتمثيل الأرقام، أما النظام الثنائي فالأساس فيه هو 2 ويستخدم رمزين فقط لتمثيل الأرقام هما 0
و 1
.
يمكن تحويل العدد المعطى من النظام السداسي عشر إلى النظام الثنائي بإيجاد العدد الثنائي المكافئ لكل رقم في العدد الثماني المعطى ثم دمج النتائج للحصول على العدد الثنائي المطلوب.
تنفيذ الخوارزمية
تعرض الأمثلة التالية طريقة تنفيذ الخوارزمية في عدد من لغات البرمجة:
- C++:
#include <bits/stdc++.h>
using namespace std;
void HexToBin(string hexdec)
{
long int i = 0;
while (hexdec[i]) {
switch (hexdec[i]) {
case '0':
cout << "0000";
break;
case '1':
cout << "0001";
break;
case '2':
cout << "0010";
break;
case '3':
cout << "0011";
break;
case '4':
cout << "0100";
break;
case '5':
cout << "0101";
break;
case '6':
cout << "0110";
break;
case '7':
cout << "0111";
break;
case '8':
cout << "1000";
break;
case '9':
cout << "1001";
break;
case 'A':
case 'a':
cout << "1010";
break;
case 'B':
case 'b':
cout << "1011";
break;
case 'C':
case 'c':
cout << "1100";
break;
case 'D':
case 'd':
cout << "1101";
break;
case 'E':
case 'e':
cout << "1110";
break;
case 'F':
case 'f':
cout << "1111";
break;
default:
cout << "\nInvalid hexadecimal digit "
<< hexdec[i];
}
i++;
}
}
// اختبار الدالة السابقة
int main()
{
// العدد المراد تحويله من النظام السداسي عشر إلى النظام الثنائي
char hexdec[100] = "1AC5";
cout << "\nEquivalent Binary value is : ";
HexToBin(hexdec);
return 0;
}
- بايثون:
- جافا:
public class Improve {
static void HexToBin(char hexdec[])
{
int i = 0;
while (hexdec[i] != '\u0000') {
switch (hexdec[i]) {
case '0':
System.out.print("0000");
break;
case '1':
System.out.print("0001");
break;
case '2':
System.out.print("0010");
break;
case '3':
System.out.print("0011");
break;
case '4':
System.out.print("0100");
break;
case '5':
System.out.print("0101");
break;
case '6':
System.out.print("0110");
break;
case '7':
System.out.print("0111");
break;
case '8':
System.out.print("1000");
break;
case '9':
System.out.print("1001");
break;
case 'A':
case 'a':
System.out.print("1010");
break;
case 'B':
case 'b':
System.out.print("1011");
break;
case 'C':
case 'c':
System.out.print("1100");
break;
case 'D':
case 'd':
System.out.print("1101");
break;
case 'E':
case 'e':
System.out.print("1110");
break;
case 'F':
case 'f':
System.out.print("1111");
break;
default:
System.out.print("\nInvalid hexadecimal digit " + hexdec[i]);
}
i++;
}
}
// اختبار الدالة السابقة
public static void main(String args[])
{
// العدد المراد تحويله من النظام السداسي عشر إلى النظام الثنائي
String s = "1AC5" ;
char hexdec[] = new char[100] ;
hexdec = s.toCharArray() ;
System.out.print("\nEquivalent Binary value is : ");
try{
HexToBin(hexdec);
}
catch (ArrayIndexOutOfBoundsException e){
System.out.print("");
}
}
}
مصادر
- صفحة Program to Convert Hexadecimal Number to Binary في توثيق الخوارزميات في موقع GeeksforGeeks.