التحويل من النظام العشري إلى النظام الثنائي
تحوّل هذه الخوارزمية العدد المعطى من النظام العشري إلى النظام الثنائي.
مثال:
Input : 7
Output : 111
Input : 10
Output : 1010
Input: 33
Output: 100001
خطوات الخوارزمية
تتبع الخوارزمية الخطوات التالية:
- تخزين باقي قسمة العدد على 2 في مصفوفة.
- تقسيم العدد على 2.
- إعادة تنفيذ الخطوات السابقة إلى أن يصبح الرقم صفرًا.
- طباعة المصفوفة الناتجة بترتيب عكسي.
فعلى سبيل المثال، لتحويل العدد العشري 10 إلى النظام الثنائي:
- باقي قسمة العدد
10على2هو0؛ لذا فإن العنصر الأول في المصفوفة هو:arr[0] = 0. - يقسّم العدد
10على2وبهذا يصبح الرقم الجديد هو ناتج القسمة10/2 = 5. - باقي قسمة العدد
5على2هو1؛ لذا فإن العنصر الثاني في المصفوفة هو:arr[1] = 1. - يقسّم العدد
5على2وبهذا يصبح الرقم الجديد هو ناتج القسمة5/2 = 2. - باقي قسمة العدد
2على2هو0؛ لذا فإن العنصر الثالث في المصفوفة هو:arr[2] = 0. - يقسّم العدد
2على2وبهذا يصبح الرقم الجديد هو ناتج القسمة2/2 = 1. - باقي قسّمة العدد
1على2هو1؛ لذا فإن العنصر الرابع في المصفوفة هو:arr[3] = 1. - يقسّم العدد
1على2وبهذا يصبح الرقم الجديد هو ناتج القسمة1/2 = 0. - وصلت الخوارزمية إلى الصفر؛ لذا تطبع المصفوفة الناتجة بترتيب معكوس، والنتيجة هي العدد الثنائي المكافئ للعدد العشري المعطى.
تنفيذ الخوارزمية
تعرض الأمثلة التالية طريقة تنفيذ الخوارزمية في عدد من لغات البرمجة:
- C++:
#include <iostream>
using namespace std;
void decToBinary(int n)
{
// تستخدم المصفوفة لتخزين العدد الثنائي
int binaryNum[32];
// عداد لمصفوفة العدد الثنائي
int i = 0;
while (n > 0) {
// تخزين باقي عملية القسمة في مصفوفة العدد الثنائي
binaryNum[i] = n % 2;
n = n / 2;
i++;
}
// طباعة عناصر مصفوفة العدد الثنائي بترتيب معكوس
for (int j = i - 1; j >= 0; j--)
cout << binaryNum[j];
}
// اختبار الدالة السابقة
int main()
{
int n = 17;
decToBinary(n);
return 0;
}
- بايثون:
def decToBinary(n):
# تستخدم هذه القائمة لتخزين العدد الثنائي
binaryNum = [0] * n;
# عداد لقائمة العدد الثنائي
i = 0;
while (n > 0):
# تخزين باقي القسمة في مصفوفة العدد الثنائي
binaryNum[i] = n % 2;
n = int(n / 2);
i += 1;
# طباعة عناصر المصفوفة بترتيب معكوس
for j in range(i - 1, -1, -1):
print(binaryNum[j], end = "");
# اختبار الدالة السابقة
n = 17;
decToBinary(n);
- جافا:
import java.io.*;
class GFG {
static void decToBinary(int n)
{
// تستخدم المصفوفة لتخزين الأعداد الثنائية
int[] binaryNum = new int[32];
// عداد لمصفوفة العدد الثنائي
int i = 0;
while (n > 0) {
// تخزين باقي القسمة في مصفوفة العدد الثنائي
binaryNum[i] = n % 2;
n = n / 2;
i++;
}
// طباعة مصفوفة العدد الثنائي بترتيب معكوس
for (int j = i - 1; j >= 0; j--)
System.out.print(binaryNum[j]);
}
// اختبار التابع السابق
public static void main(String[] args)
{
int n = 17;
decToBinary(n);
}
}
مصادر
- صفحة Program for Decimal to Binary Conversion في توثيق الخوارزميات في موقع GeeksforGeeks.