الويب العربي

الويب العربي (http://www.arabwebtalk.com/index.php)
-   تبادل خبرات البرمجة (http://www.arabwebtalk.com/forumdisplay.php?f=57)
-   -   التعبير عن بعض الأنظمة الرقمية بإستخدام لغة السى (http://www.arabwebtalk.com/showthread.php?t=164428)

صالح عباس 10-11-2011 11:44 PM

التعبير عن بعض الأنظمة الرقمية بإستخدام لغة السى
 
بعد التحية الطيبة لجميع الأخوة الأفاضل، أحببت أن أقدم ذلك الموضوع البسيط الذى تناولت فيه شيئ يسير عن طريقة تمثيل بعض من الأنظمة الرقمية بإستخدام لغة السى.

من المعروف أنه فى حالة البرمجة بلغة السى، نحتاج إلى تعريف ما يسمى بالمتغيرات التى تحمل بعض القيم الثابته أو المتغيرة، وعند الحديث عن القيم خصوصًا القيم الصحيحة مثل 5, -3, 122 وما إلى ذلك نقوم بالآتى

كود:

int x = 15;

فلنفرض مثلاً أننا نود تخزين قيمة رقمية بالنظام الثمانى (Ocatal) أو النظام السادس عشر (Hexadecimal) فى المتغير x، ماذا نفعل ؟
بداية سوف أقوم بعرض مثالين بسيطين عن كيفية التحويل من النظام العشرى إلى كلاً من النظام الثمانى والنظام السادس عشر

أولاً :: التحويل من النظام العشرى إلى النظام الثمانى (Octal)

النظام الثمانى يتكون من تلك الأرقام (0, 1, 2, 3, 4, 5, 6, 7) لذلك سُمى بالثمانى، فإذا أردنا مثلاً تحويل لرقم العشرى 40 إلى الرقم المقابل له بالنظام الثمانى نقوم بالخطوات الآتية:

1- نقوم بقسمة الرقم 40 على 8 (Base of Octal System)

40/ 8 = 5 والباقى 0
5 / 8 = 0 والباقى 5

2- نقوم بكتابة الرقم من أسفل إلى أعلى ومن اليسار إلى اليمين هكذا "50"

ثانيًا :: التحويل من النظام العشرى إلى النظام السادس عشر (Hexadecimal)

النظام السادس عشر يتكون من تلك الأرقام (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f) لذلك سُمى بالسادس عشر، فإن أرنا تحويل الرقم العشرى 100 إلى الرقم المقابل له بالنظام السادس عشر نقوم بالخطوات الآتية:

1- نقوم بقسمة الرقم 100 على 16 (Base of Hexadecimal System)

100 / 16 = 6 والباقى 4
6 / 16 = 0 والباقى 6

2- 2- نقوم بكتابة الرقم من أسفل إلى أعلى ومن اليسار إلى اليمين هكذا "64"

والآن بعد الإنتهاء من مراجعة سريعة لطريقة التحويل من النظام العشرى إلى كلاً من النظام الثمانى و النظام السادس عشر، دعونا ننتقل إلى الجزء الذى قمت بكتابة الموضوع خصيصًا من أجله، ألا وهو تمثيل النظام العشرى والنظام الثمانى والنظام السادس عشر عن طريق إستخدام لغة السى.

أولاً :: تمثيل النظام الثمانى فى لغة السى

لنفرض أن الرقم المكتوب بالنظام الثمانى هو "50" ونود تخزينة متغير ما و من ثم عرضه، فنقوم أولاً بإضافة صفر على يسار الرقم (لإخبار المترجم بأن ذلك الرقم هو رقم ثمانى هكذا)

كود:

int x = 050;

ونقوم بإستخدام ذلكك الترميز لعرضه بإستخدام الداله printf هكذا...
كود:

printf ("%o", x)
  50

نلاحظ ظهور الرقم "50"، وهو الرقم المُمثل بالنظام الثمانى، ويمكن إظهار الصفر الموجود فى يسار الرقم هكذا....
كود:

printf ("%#o", x)
 050

ثانيًا :: تمثيل النظام السادس عشر فى لغة السى

لنفرض أن الرقم المكتوب بالنظام الثمانى هو "64" ونود تخزينة متغير ما و من ثم عرضه، فنقوم أولاً بإضافة "0x" أو "0X" على يسار الرقم (لإخبار المترجم بأن ذلك الرقم هو رقم سادس عشر هكذا)
كود:

int x = 0x64;

ونقوم بإستخدام ذلكك الترميز لعرضه بإستخدام الداله printf هكذا...
كود:

printf ("%x", x)
64

نلاحظ ظهور الرقم "64"، وهو الرقم المُمثل بالنظام الادس عشر، ويمكن إظهار الرقم صفر و الحرف x الموجودين فى يسار الرقم هكذا....
كود:

printf ("%#x", x)
 0x64

وإلى هنا نكون قد وصلنا إلى نهاية هذا الشرح البسيط الذى قد يكون غير مألوف لبعضنا، ونسأل الله عزوجل أن يجعله فى ميزان حسناتنا، وكل عام وأنتم بألف خير.


جميع الأوقات بتوقيت مكة المكرمة. الساعة الآن » 02:03 AM.

Powered by vBulletin
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © ArabWebTalk.Com 2004-2012