تحويل الأعداد من النظام الثماني إلى النظام الثنائي

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

تحوّل هذه الخوارزمية العدد المعطى من النظام الثماني (الأساس 8) إلى النظام الثنائي (الأساس 2).

مثال:

Input : Octal = 345
Output : Binary = 011100101
توضيح: 
العدد الثنائي المكافئ للعدد 3: 011
العدد الثنائي المكافئ للعدد 4: 100
العدد الثنائي المكافئ للعدد 5: 101

Input : Octal = 120
Output : Binary = 001010000

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

النظام الثماني Octal هو نظام أعداد موقعي يعتمد الجذر أو الأساس 8، ويستخدم ثماني رموز لتمثيل الأرقام.

أما النظام الثنائي فيعتمد الجذر أو الأساس 2 ويستخدم رمزين فقط لتمثيل الأرقام هما 0 و 1.

يمكن تحويل العدد المعطى من النظام الثماني إلى النظام الثنائي بإيجاد العدد الثنائي المكافئ لكل رقم في العدد الثماني المعطى ثم دمج النتائج للحصول على العدد الثنائي المطلوب.

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

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

  • C++‎:
#include <iostream> 
using namespace std; 

string OctToBin(string octnum) 
{ 
	long int i = 0; 

	string binary = ""; 

	while (octnum[i]) { 
		switch (octnum[i]) { 
		case '0': 
			binary += "000"; 
			break; 
		case '1': 
			binary += "001"; 
			break; 
		case '2': 
			binary += "010"; 
			break; 
		case '3': 
			binary += "011"; 
			break; 
		case '4': 
			binary += "100"; 
			break; 
		case '5': 
			binary += "101"; 
			break; 
		case '6': 
			binary += "110"; 
			break; 
		case '7': 
			binary += "111"; 
			break; 
		default: 
			cout << "\nInvalid Octal Digit "
				<< octnum[i]; 
			break; 
		} 
		i++; 
	} 

	return binary; 
} 

// اختبار الدالة السابقة
int main() 
{ 
	// العدد المراد تحويله من النظام الثماني إلى النظام الثنائي
	string octnum = "345"; 

	cout << "Equivalent Binary Value = "
		<< OctToBin(octnum); 

	return 0; 
}
  • بايثون:
  • جافا:
import java.util.*; 
class Solution 
{ 

static String OctToBin(String octnum) 
{ 
	long i = 0; 

	String binary = ""; 
	
	while (i<octnum.length()) { 
		
		char c=octnum.charAt((int)i); 
		switch (c) { 
		case '0': 
			binary += "000"; 
			break; 
		case '1': 
			binary += "001"; 
			break; 
		case '2': 
			binary += "010"; 
			break; 
		case '3': 
			binary += "011"; 
			break; 
		case '4': 
			binary += "100"; 
			break; 
		case '5': 
			binary += "101"; 
			break; 
		case '6': 
			binary += "110"; 
			break; 
		case '7': 
			binary += "111"; 
			break; 
		default: 
			System.out.println( "\nInvalid Octal Digit "+ octnum.charAt((int)i)); 
			break; 
		} 
		i++; 
	} 

	return binary; 
} 

// اختبار التابع السابق 
public static void main(String args[]) 
{ 
	// العدد المراد تحويله من النظام الثماني إلى النظام الثنائي
	String octnum = "345"; 

	System.out.println( "Equivalent Binary Value = "+ OctToBin(octnum)); 

} 

}

مصادر