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