التحويل من النظام العشري إلى النظام الثنائي

من موسوعة حسوب

تحوّل هذه الخوارزمية العدد المعطى من النظام العشري إلى النظام الثنائي.

مثال:

Input : 7
Output : 111

Input : 10
Output : 1010

Input: 33
Output: 100001

خطوات الخوارزمية

تتبع الخوارزمية الخطوات التالية:

  1. تخزين باقي قسمة العدد على 2 في مصفوفة.
  2. تقسيم العدد على 2.
  3. إعادة تنفيذ الخطوات السابقة إلى أن يصبح الرقم صفرًا.
  4. طباعة المصفوفة الناتجة بترتيب عكسي.

فعلى سبيل المثال، لتحويل العدد العشري 10 إلى النظام الثنائي:

  1. باقي قسمة العدد 10 على 2 هو 0؛ لذا فإن العنصر الأول في المصفوفة هو: arr[0] = 0.
  2. يقسّم العدد 10 على 2 وبهذا يصبح الرقم الجديد هو ناتج القسمة ‎10/2 = 5.
  3. باقي قسمة العدد 5 على 2 هو 1؛ لذا فإن العنصر الثاني في المصفوفة هو: arr[1] = 1.
  4. يقسّم العدد 5 على 2 وبهذا يصبح الرقم الجديد هو ناتج القسمة ‎5/2 = 2.
  5. باقي قسمة العدد 2 على 2 هو 0؛ لذا فإن العنصر الثالث في المصفوفة هو: arr[2] = 0.
  6. يقسّم العدد 2 على 2 وبهذا يصبح الرقم الجديد هو ناتج القسمة ‎2/2 = 1.
  7. باقي قسّمة العدد 1 على 2 هو 1؛ لذا فإن العنصر الرابع في المصفوفة هو: arr[3] = 1.
  8. يقسّم العدد 1 على 2 وبهذا يصبح الرقم الجديد هو ناتج القسمة ‎1/2 = 0.
  9. وصلت الخوارزمية إلى الصفر؛ لذا تطبع المصفوفة الناتجة بترتيب معكوس، والنتيجة هي العدد الثنائي المكافئ للعدد العشري المعطى.

تنفيذ الخوارزمية

تعرض الأمثلة التالية طريقة تنفيذ الخوارزمية في عدد من لغات البرمجة:

  • 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); 
	} 
}

مصادر