شرح النظام الستعشري للمبتدئين Hexadecimal
صفحة 1 من اصل 1
شرح النظام الستعشري للمبتدئين Hexadecimal
اهداء الى يلا نت الفشرح النظام الستعشري للمبتدئين Hexadecimalالنظام الستعشري هو من أهم أنظمة العد التي تستخدم كثيرا في البرمجة و في مجالات أخرى كثيرة (مثلا أكواد فك التشفير للرسيفر هي بالنظام الستعشري) لهذا سنقوم بشرح هذا النظام بشكلمبسط ....
من المعروف أننا في حياتنا اليومية تستخدم النظام العشري ... يعني الأرقام العادية التي نتعامل معها 0 - 1 - 2 - الى... 9 و لا أحد يجد أي صعوبة في التعامل بها .....
إن النظام الستعشري لا يختلف في شيء ! و لكن الفرق الوحيد أنه في النظام العشري يوجد 10 أرقام أساسية فقط هي من الصفر الى التسعة ... لكن في النظام الستعشري يوجد 16 رقم أساسي !
في حال كنت تستغرب أن يكون هناك نظام غير النظام العشري فدعني أذكرك أننا نتعامل مع نظام آخر و لكن دون أن نشعر و هو النظام الستيني ! نعم ... و ذلك في الساعة ... الساعة 60 دقيقية
... الدقيقة 60 ثانية .... يعني العبرة أن النظام العشري ليس النظام الطبيعي و باقي الأنظمة غريبة ... لكن نحن من تعودنا عليه فلم نعد نجده غريبا ... و بالمناسبة سبب اعتماد النظام العشري منذالقديم هو أن الانسان أول ما بدأ العد كان يستخدم أصابع يديه و هي عشرة !
إذا من الناحية النظرية هناك عدد لا نهائي من أنظمة العد : ثنائي - ثلاثي - رباعي - .... الى ما لا نهاية ....
لكن عمليا هناك فقط بعض من هذه الأنظمة مستخدم و هي بشكل رئيسي :
النظام العشري الذي نعرفه و نحبه Decimal
النظام الستعشري المفيد جدا في البرمجة و غيرها Hexadecimal
النظام الثماني الذي كان مستخدما بشكل واسع في البرمجة لكن خف استعماله حاليا Octal
النظام الثنائي و هو النظام الذي لولاه لما وجود الكومبيوتر Binary
نعود لموضوعنا ... قلنا أن النظام العشري فيه عشرة أرقام 0-1-2-....-9 أما النظام الستعشري ففيه 16 رقما !
أول 10 أرقام من النظام الستعشري هي نفسها في النظام العشري ... لكن ماذا عن الستة الباقية ؟ عند ابتكار هذا النظام كان لا بد من اختراع رموز لتعبر عن هذه الأرقام لكن المشكلة هي أنه يجباستخدام رموز موجودة مسبقا لذا تم استخدام الأحرفA-B-C-D-E-F
لتعبر عن هذه الأرقام و بالتالي تصبح أرقام النظام الستعشري و ما يقابلها بالنظام العشريكما يلي:
Hexadecimal ... Decimal
0 = 0
1 = 1
2 = 2
3 = 3
4 = 4
5 = 5
6 = 6
7 = 7
8 = 8
9 = 9
A = 10
B = 11
C = 12
D = 13
E = 14
F = 15
طيب ماذا يأتي بعد F ؟ بسيطة 10 !
لاحظ أن 10 في النظام الستعشري = 16 في النظام العشري ... لماذا ؟ لأن 10 في النظام الستعشري لا تتم قراءتها أنها "عشرة" و لكن تقرأ "واحد-صفر"
لتقريب الفكرة أكثر ... كلنا نعرف أنه في النظام العشري بعد 9 يأتي 10 ... لكن لماذا ؟ببساطة بما أن 9 هي آخر رقم في النظام العشري (لأنه عندنا 10 أرقام فقط من الصفر الى تسعة) فعند زيادة واحد أي 9+1 نقوم بالتالي :
نضع الرقم الأول في نظام العد في اليسار و نضع قبله صفر فينتج لدينا 10 ... و نفس الشيء تماما في النظام الستعشري .....
طيب لنتابع مقارنة الأرقام العشرية مع الستعشرية :
Hexadecimal ... Decimal
10 = 16
11 = 17
12 = 18
13 = 19
14 = 20
15 = 21
16 = 22
17 = 23
18 = 24
19 = 25
ماذا بعد 19 في النظام الستعشري ؟
1A = 26
1B = 27
1C = 28
1D = 29
1E = 30
1F = 31
و ألآن ماذا يأتي؟
20 = 32
21 = 33
و هكذا .......
طيب كل هذا جميل ... لكن هناك مشكلة أننا تعودنا على النظام العشري لدرجة كبيرة ... حتى أننا نفكر بهذا النظام ... و التعود على غيره مسألة صعبة ... فلماذا ابتكروا هذا النظام المربك ؟؟؟الجواب ببساطة هو أن النظام الستعشري وجد ليريحنا من التعامل مع النظام الثنائي ......
النظام الثنائي لا يحوي إلا رقمين هما 0 و 1 و بهذا تكون الأرقام الثنائية مقارنة مع العشرية كما يلي:
Decimal ... Binary
0 = 0
1 = 1
2 = 10
3 = 11
4 = 100
5 = 101
6 = 110
7 = 111
8 = 1000
9 = 1001
و هكذا .... لاحظ كيف أنه بسبب عدم وجود غير الرقمين 0 و 1 فإن الأرقام تكبر بصورة سريعة ... مثلا الرقم 255 بالعشري = في الثنائي: 11111111طيب إذا كان النظام الثنائي معقد لهذه الدرجة - ما الداعي لاستخدامه ؟ الجواب هو أنه بسبب كون النظام لا يحوي إلا رقمين فإنه يمكن بواسطته محاكاة الواقع ... يعني يمكن لهذا النظام أن يمثلدارة كهربائية و يكون 0 = مرور تيار و 1 = عدم مرور تيار ..... هذه الخاصية هي التي سمحت ببرمجة الحواسب الأولى (في الخمسينيات من هذا القرن) بالنظام الثنائي لكن سرعان ما ظهرتالمشكلة ... النظام الثنائي معقد و البرمجة به (تسمى البرمجة بلغة الآلة) عملية معقدة ... كما أن هذا النظام محدود يعني عند تمثيل أرقام كبيرة جدا يمكن أن تظهر أعداد مثل هذا:
1110111001000010111110010101001111111111111111 1111111111111 ( و هو يساوي العدد العشري 7886392056514347007) يعني صعوبة فيالتعامل كما أن ذاكرة الحاسب لن تتسع لهكذا أعداد ... لذا قاموا بالبداية بتجميع كل 8 أرقام ثنائية و التعامل معها ككتلة واحدة و من هنا نشأ البايت:
1 Byte = 8 Bit
حيث الكلمة BIT تأتي من تركيب كلمتين هما BINARY DIGIT أي رقم ثنائي ....
و هذا حل مشكلة الذاكرة حيث يمكن تقسيم الأعداد الكبيرة الى عدة بايتات ... لكن مشكلة صعوبة النظام الثنائي بقيت ...
قد تسأل لماذا لا يتم استخدام النظام العشري في التعامل البشري ... ثم تتم ترجمته داخليا الى النظام الثنائي حتى يفهمه الكومبيوتر و غيره من الأجهزة ... عمليا هذا ما يحصل لكن المشكلة هي أنهعندما ندقق في القيم التي يمكن أن يأخذها بايت واحد نجد ما يلي:
بما أن البايت مكون من 8 أرقام ثنائية فإن أكبر قيمة للبايت هي 11111111 (أي 8 واحدات!) و هي تساوي في النظام العشري 255 أما في النظام استعشري فهي FF
و بهذه البساطة يتفوق النظام الستعشري على العشري !!! لماذا ؟ لأنه يمكن التعبير عن بايت واحد برقمين أما في العشري فسنحتاج لرقمين أو ثلاثة و هذا يسبب صعوبات كبيرة مثلا فلنأخذهذا الكود المستخدم لفتح الباقات المشفرةعلى أجهزة الرسيفر:
CF57ACF28E4BD540
كلنا نعلم أنه يتم ادخاله كما يلي:
CF 57 AC F2 8E 4B D5 40
لماذا لم نضع فراغات في السطر الأول ؟ لأنه لا حاجة لها فنحن نعرف أن كل بايت مكون من رقمين ستعشريين دائماطيب لنجرب كتابتها بالنظام العشري:
هكذا خطأ لأنه لم نعد نعرف البايتات من بعضها !
207871722421427521364 (الصواب هو: 207 87 172 242 142 75 213 64)
من المعروف أننا في حياتنا اليومية تستخدم النظام العشري ... يعني الأرقام العادية التي نتعامل معها 0 - 1 - 2 - الى... 9 و لا أحد يجد أي صعوبة في التعامل بها .....
إن النظام الستعشري لا يختلف في شيء ! و لكن الفرق الوحيد أنه في النظام العشري يوجد 10 أرقام أساسية فقط هي من الصفر الى التسعة ... لكن في النظام الستعشري يوجد 16 رقم أساسي !
في حال كنت تستغرب أن يكون هناك نظام غير النظام العشري فدعني أذكرك أننا نتعامل مع نظام آخر و لكن دون أن نشعر و هو النظام الستيني ! نعم ... و ذلك في الساعة ... الساعة 60 دقيقية
... الدقيقة 60 ثانية .... يعني العبرة أن النظام العشري ليس النظام الطبيعي و باقي الأنظمة غريبة ... لكن نحن من تعودنا عليه فلم نعد نجده غريبا ... و بالمناسبة سبب اعتماد النظام العشري منذالقديم هو أن الانسان أول ما بدأ العد كان يستخدم أصابع يديه و هي عشرة !
إذا من الناحية النظرية هناك عدد لا نهائي من أنظمة العد : ثنائي - ثلاثي - رباعي - .... الى ما لا نهاية ....
لكن عمليا هناك فقط بعض من هذه الأنظمة مستخدم و هي بشكل رئيسي :
النظام العشري الذي نعرفه و نحبه Decimal
النظام الستعشري المفيد جدا في البرمجة و غيرها Hexadecimal
النظام الثماني الذي كان مستخدما بشكل واسع في البرمجة لكن خف استعماله حاليا Octal
النظام الثنائي و هو النظام الذي لولاه لما وجود الكومبيوتر Binary
نعود لموضوعنا ... قلنا أن النظام العشري فيه عشرة أرقام 0-1-2-....-9 أما النظام الستعشري ففيه 16 رقما !
أول 10 أرقام من النظام الستعشري هي نفسها في النظام العشري ... لكن ماذا عن الستة الباقية ؟ عند ابتكار هذا النظام كان لا بد من اختراع رموز لتعبر عن هذه الأرقام لكن المشكلة هي أنه يجباستخدام رموز موجودة مسبقا لذا تم استخدام الأحرفA-B-C-D-E-F
لتعبر عن هذه الأرقام و بالتالي تصبح أرقام النظام الستعشري و ما يقابلها بالنظام العشريكما يلي:
Hexadecimal ... Decimal
0 = 0
1 = 1
2 = 2
3 = 3
4 = 4
5 = 5
6 = 6
7 = 7
8 = 8
9 = 9
A = 10
B = 11
C = 12
D = 13
E = 14
F = 15
طيب ماذا يأتي بعد F ؟ بسيطة 10 !
لاحظ أن 10 في النظام الستعشري = 16 في النظام العشري ... لماذا ؟ لأن 10 في النظام الستعشري لا تتم قراءتها أنها "عشرة" و لكن تقرأ "واحد-صفر"
لتقريب الفكرة أكثر ... كلنا نعرف أنه في النظام العشري بعد 9 يأتي 10 ... لكن لماذا ؟ببساطة بما أن 9 هي آخر رقم في النظام العشري (لأنه عندنا 10 أرقام فقط من الصفر الى تسعة) فعند زيادة واحد أي 9+1 نقوم بالتالي :
نضع الرقم الأول في نظام العد في اليسار و نضع قبله صفر فينتج لدينا 10 ... و نفس الشيء تماما في النظام الستعشري .....
طيب لنتابع مقارنة الأرقام العشرية مع الستعشرية :
Hexadecimal ... Decimal
10 = 16
11 = 17
12 = 18
13 = 19
14 = 20
15 = 21
16 = 22
17 = 23
18 = 24
19 = 25
ماذا بعد 19 في النظام الستعشري ؟
1A = 26
1B = 27
1C = 28
1D = 29
1E = 30
1F = 31
و ألآن ماذا يأتي؟
20 = 32
21 = 33
و هكذا .......
طيب كل هذا جميل ... لكن هناك مشكلة أننا تعودنا على النظام العشري لدرجة كبيرة ... حتى أننا نفكر بهذا النظام ... و التعود على غيره مسألة صعبة ... فلماذا ابتكروا هذا النظام المربك ؟؟؟الجواب ببساطة هو أن النظام الستعشري وجد ليريحنا من التعامل مع النظام الثنائي ......
النظام الثنائي لا يحوي إلا رقمين هما 0 و 1 و بهذا تكون الأرقام الثنائية مقارنة مع العشرية كما يلي:
Decimal ... Binary
0 = 0
1 = 1
2 = 10
3 = 11
4 = 100
5 = 101
6 = 110
7 = 111
8 = 1000
9 = 1001
و هكذا .... لاحظ كيف أنه بسبب عدم وجود غير الرقمين 0 و 1 فإن الأرقام تكبر بصورة سريعة ... مثلا الرقم 255 بالعشري = في الثنائي: 11111111طيب إذا كان النظام الثنائي معقد لهذه الدرجة - ما الداعي لاستخدامه ؟ الجواب هو أنه بسبب كون النظام لا يحوي إلا رقمين فإنه يمكن بواسطته محاكاة الواقع ... يعني يمكن لهذا النظام أن يمثلدارة كهربائية و يكون 0 = مرور تيار و 1 = عدم مرور تيار ..... هذه الخاصية هي التي سمحت ببرمجة الحواسب الأولى (في الخمسينيات من هذا القرن) بالنظام الثنائي لكن سرعان ما ظهرتالمشكلة ... النظام الثنائي معقد و البرمجة به (تسمى البرمجة بلغة الآلة) عملية معقدة ... كما أن هذا النظام محدود يعني عند تمثيل أرقام كبيرة جدا يمكن أن تظهر أعداد مثل هذا:
1110111001000010111110010101001111111111111111 1111111111111 ( و هو يساوي العدد العشري 7886392056514347007) يعني صعوبة فيالتعامل كما أن ذاكرة الحاسب لن تتسع لهكذا أعداد ... لذا قاموا بالبداية بتجميع كل 8 أرقام ثنائية و التعامل معها ككتلة واحدة و من هنا نشأ البايت:
1 Byte = 8 Bit
حيث الكلمة BIT تأتي من تركيب كلمتين هما BINARY DIGIT أي رقم ثنائي ....
و هذا حل مشكلة الذاكرة حيث يمكن تقسيم الأعداد الكبيرة الى عدة بايتات ... لكن مشكلة صعوبة النظام الثنائي بقيت ...
قد تسأل لماذا لا يتم استخدام النظام العشري في التعامل البشري ... ثم تتم ترجمته داخليا الى النظام الثنائي حتى يفهمه الكومبيوتر و غيره من الأجهزة ... عمليا هذا ما يحصل لكن المشكلة هي أنهعندما ندقق في القيم التي يمكن أن يأخذها بايت واحد نجد ما يلي:
بما أن البايت مكون من 8 أرقام ثنائية فإن أكبر قيمة للبايت هي 11111111 (أي 8 واحدات!) و هي تساوي في النظام العشري 255 أما في النظام استعشري فهي FF
و بهذه البساطة يتفوق النظام الستعشري على العشري !!! لماذا ؟ لأنه يمكن التعبير عن بايت واحد برقمين أما في العشري فسنحتاج لرقمين أو ثلاثة و هذا يسبب صعوبات كبيرة مثلا فلنأخذهذا الكود المستخدم لفتح الباقات المشفرةعلى أجهزة الرسيفر:
CF57ACF28E4BD540
كلنا نعلم أنه يتم ادخاله كما يلي:
CF 57 AC F2 8E 4B D5 40
لماذا لم نضع فراغات في السطر الأول ؟ لأنه لا حاجة لها فنحن نعرف أن كل بايت مكون من رقمين ستعشريين دائماطيب لنجرب كتابتها بالنظام العشري:
هكذا خطأ لأنه لم نعد نعرف البايتات من بعضها !
207871722421427521364 (الصواب هو: 207 87 172 242 142 75 213 64)
ayoub bou- عضو نشط
- عدد الرسائل : 20
العمر : 35
البلد/المدينة : عين الحجل المسيلة
المزاج : هادئ و بشوش
نقاط النشاط : 5714
تاريخ التسجيل : 18/09/2008
رد: شرح النظام الستعشري للمبتدئين Hexadecimal
لهذا تم استخدام النظام الستعشري ليعبر عن البايتات لأنه يعطي تمثيل ثابت Stable Representation عن البايتات: البايت يحتاج خانتين - 2 بايت أربعة خانات - الخ..........
نقطة أخيرة هي كيفية التحويل بين الأنظمة ... طبعا يمكن استخدام برامج جاهزة مثل الآلة الحاسبة لكن يجب أن نكون نعرف كيف يتم ذلك يدويا......
مثال سنحول عد ستعشري الى عشري:
Hex: 41C = Dec: 1052
الخطوات: (الرمز * يعبر عن عملية الضرب - hex يعني ستعشري - dec يعني عشري)
Hex 41C =Hex 4*100 + 1*10 + C = Dec 4 * (16*16) + 1 * (16) + 12 = 1052
أي مثل الأرقام العشرية لكن بدل أن تكون الخانات في العدد العشري هي آحاد - 10- 100 - 1000 - ......
فهي في العدد الستعشري: آحاد - 16 - 16*16 - 16*16*16 - و هكذا........
للتحويل من عشري الى ستعشري نقسم بدل أن نضرب و نأخذ باقي القسمة (الرمز / يعني القسمة - Mod يعني باقي القسمة)
1052 / 16 = 65 , mod=12 dec = hex: C
65 / 16 = 4 , mod=1 dec = hex: 1
4 / 16 = 0 , mod = 4 dec = hex: 4
==> 1052 dec = 41C hex
أتمنى أن تكون هذه مقدمة جيدة و مفيدة للمهتمين بهذا الموضوع .....
ayoub bou- عضو نشط
- عدد الرسائل : 20
العمر : 35
البلد/المدينة : عين الحجل المسيلة
المزاج : هادئ و بشوش
نقاط النشاط : 5714
تاريخ التسجيل : 18/09/2008
رد: شرح النظام الستعشري للمبتدئين Hexadecimal
جزاك الله خيرا اخ ايوب على اللموضوع الجد قيم
ننتظر مساهماتك اخي الكريم
ننتظر مساهماتك اخي الكريم
زائر- زائر
رد: شرح النظام الستعشري للمبتدئين Hexadecimal
شكرا على الرد والمرور
ayoub bou- عضو نشط
- عدد الرسائل : 20
العمر : 35
البلد/المدينة : عين الحجل المسيلة
المزاج : هادئ و بشوش
نقاط النشاط : 5714
تاريخ التسجيل : 18/09/2008
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى