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

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

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

مثال:

Input : 67
Output : 55

Input : 512
Output : 330

Input: 123
Output: 83

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

تستخرج الخوارزمية الأرقام من العدد الثماني المعطى بدءًا من اليمين، وتضرب كلّ رقم مُستخرج بالأساس المقابل لمرتبة ذلك الرقم (قوة العدد 8) وتضيفه إلى متغير يمثّل نتيجة عملية التحويل (ليكن dec_value).

لتحويل العدد 67 من النظام الثماني إلى النظام العشري:

dec_value = 6*(8^1) + 7*(8^0) = 55

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

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

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

int octalToDecimal(int n) 
{ 
	int num = n; 
	int dec_value = 0; 

	// تهيئة قيمة الأساس لتكون 1 
	int base = 1; 

	int temp = num; 
	while (temp) { 

		// استخراج الحروف كأرقام بدءًا من الحرف الأخير 
		int last_digit = temp % 10; 
		temp = temp / 10; 

		// إيجاد حاصل ضرب الرقم الأخير بالأساس المناسب
		// dec_value وإضافة النتيجة إلى المتغير
		dec_value += last_digit * base; 

		base = base * 8; 
	} 

	return dec_value; 
} 

// اختبار الدالة السابقة
int main() 
{ 
	int num = 67; 

	cout << octalToDecimal(num) << endl; 
}
  • بايثون:
def octalToDecimal(n): 
	
	num = n; 
	dec_value = 0; 

	# تهيئة قيمة الأساس لتكون 1  
	base = 1; 

	temp = num; 
	while (temp): 

		# استخراج الحروف كأرقام بدءًا من الحرف الأخير 
		last_digit = temp % 10; 
		temp = int(temp / 10); 

		# إيجاد حاصل ضرب الرقم الأخير بالأساس المناسب
		# dec_value وإضافة النتيجة إلى المتغير
		dec_value += last_digit * base; 

		base = base * 8; 

	return dec_value; 

# اختبار الدالة السابقة
num = 67; 
print(octalToDecimal(num));
  • جافا:
import java.io.*; 

class GFG { 

	static int octalToDecimal(int n) 
	{ 
		int num = n; 
		int dec_value = 0; 

		// تهيئة قيمة الأساس لتكون 1 
		int base = 1; 

		int temp = num; 
		while (temp > 0) { 
			// استخراج الحروف كأرقام بدءًا من الحرف الأخير 
			int last_digit = temp % 10; 
			temp = temp / 10; 

			// إيجاد حاصل ضرب الرقم الأخير بالأساس المناسب
			//  dec_value وإضافة النتيجة إلى المتغير
			dec_value += last_digit * base; 

			base = base * 8; 
		} 
		return dec_value; 
	} 

	// اختبار التابع السابق
	public static void main(String[] args) 
	{ 
		int num = 67; 
		System.out.println(octalToDecimal(num)); 
	} 
}

مصادر