التحويل من النظام العشري إلى النظام الثنائي
تحوّل هذه الخوارزمية العدد المعطى من النظام العشري إلى النظام الثنائي.
مثال:
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.