يعتبر البت والبايت الحجر
الأساسي للحاسوب الي يمكننا من خلالها تمثيل
المعطيات
يعتبر البت خانة ثنائية واحدة تمثل أصغر وحدة
تخزين فهي تحمل قيمة 1 اذا تمت مغنطتها (
الحالة on ) وتحمل القيمة 0 اذا لم تمغنط (
الحالة off) وينشأ عن تجميعها مع الخانات
الثنائية الاخري القدرة علي تمثيل البايتات
التي تتكون بايت واحد من ثمان بتات .. وفي
الحقيقة البايت تمثل داخليا بتسع بتات
الثمانية منها لتمثيل المعطيات والتاسعة
تمثل خانة التحقق parity bit
1 1 1 1 1 1 1 1 | 1 ّ|
data المعطيات parity التحقق
وتجري العمليات الحسابية علي ثمان بتات
الاولي ويمكن من خلالها تمثيل المحارف characters
والرموز symbols او الارقام مثلا حرف A يمثل بــ
01000001 والرمز * بــ 00101010
تسمح هذه الخانات الثمانية بالحصول علي تركيب
مختلفة من القيمتين 1 و 0 وذاك ابتداءا من
التركيب 0000000 حتي 11111111
فلنقل ان لدينا عددان 123 و 76 فيتم تمثيلها هكذ
123 76
1 1 0 1, 1 1 1 1 | 0 0 1 1, 0 0 0 1
وعند التخزين : اذا كان عدد البتات اقل من 8
يضاف اليها اصفار ، فمثلا القيمة 1010 تخزن
0000,1010
العدد الثنائي Binary or Base2
يستطيع الحاسوب ان
تميز بين القيمتين 0 و 1 فقط ولذلك كما قلنا يتم
تمثيل المعطيات ومعالجتها بنظام الثنائي ذي
الاساس 2 وهو نظام يسمح بتمثيل كافة الاعداد
بواسطة القيمتين 0 و 1 ( اي نستطيع تخزين احدي
القيمتين فى خانة bit واحدة bit = binary digit )
يحمل اي عدد ثنائي قيمة تعتمد علي الموقع
النسبي ( فلنقل مثلا هناك 4 خانات من العدد
الثنائي في موقع ما ) اول خانة منها اذا كان
يحتوي علي 1 يكون قيمته 1*1 والثاني رفع قيمتها
الي اثنين ( اذا كان يحمل 1 يكون 1 * 2 والا 0 * 2 )
والثالثة رفع قيمتها الي 3 هكذا والرابعة رفع
قيمتها الي 4
2 ^ 1 = 2
2 ^ 2 = 4
2 ^ 4 = 8
2 ^ 8 = 16
2 ^ 16 = 32
2 ^ 32 = 64
2 ^ 64 = 128
( ملحوظة : سنستعمل علامة ^ لعملية الرفع power
وعلامة * لعملية ضرب وعلامة / لعملية القسمة ،
وعلامة # القيمة التي تحملها الخانة، الرفع
مثلا 10^2 = 10 * 10 = 100، 10^4 = 10 * 10 * 10 * 10 = 1000 )
مثلا ناخذ الرقم الثنائي 1101 = 13 اربع خانات ( او
اربع بتات متتابعات فى الذاكرة مثلا )
| 1 | 2 | 4 | 8 |
-------------------------------------------------------
1 0 1 1
ويتم حسابها هكذا
1 ^ 1 = 1 اول خانة
0 ^ 2 = 0 ثاني
1 ^ 4 = 4 ثالث
1 ^ 8 = 8 رابع
---------
13 =
اذن الموقع التي توجد فيها البتات الاربع
تمثل القيمة 13
واليك مثل آخر الرقم 10001 = 17 خمسة خانات
1 ^ 1 = 1
0 ^ 2 = 0
0 ^ 4 = 0
0 ^ 8 = 0
1 ^ 16 = 16
---------
=17
والموقع التي فيها الخانات تمثل الرقم 17
( لا ينحصر تعامل الحاسوب مع الاعدادالثنائية
المؤلفة من ثماني بتات ( خانات ) فقط فهذا
الامر يختلف تبعا لبنية المعالج ، المعالج ذو
البنية 16 خانة او 32 خانة تستطيع التعامل مع
الاعداد المؤلفة من 16 بت او 32 بت بشكل آلي اذا
كان نستطيع الحصول من 8 خانات ثنائية علي
القيمة 256 فمن خلال 16 خانة يمكن الحصول علي 1-2 ^
16 = 65635 ومن 32 خانة نحصل علي القيمة 4294967295 )
العدد العشري Decimal or Base10
كلنا نعرف العدد
العشري ونستطيع نعدها كالتالي
0 1 2 3 4 5 6 7 8 9
يعني الرقم 10 يكون الأساس ( كما ان 0 و1 اي
الاثنان اساس فى النظام الثنائي )
فلناخذ الرقم 1040 ويكون تمثيله
| رقم عادي | عشر | مئة | الف |
--------------------------------------------------
0 4 0 1
اول خانة رقم تحت 10 وهي هنا 0 ، والقيمة تكون 10 ^
0 * 0 والثانية خانة تحمل 10 ^ 1 * القيمة والثالثة
تحمل 10 ^ 2 * القيمة والرابعة تحمل 10 ^ 3 * القيمة
14، هذا رقم عشري وتمثيله بالعدد الثنائي 1110
اما تمثيله فى الستشعري هي E
لأن تمثيل الستشعري هكذا
F , E , D , C , B , A , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 , 0
لاحظ انه
A = 10
B = 11
C = 12
D = 13
E = 14
F = 15
هـ = ستعشري
16 ^ 0 = 0
16 ^ 1 = 16 = 10هـ
16 ^ 2 = 256 = 100هـ
16 ^ 3 = 4096 = 1000هـ
16 ^ 4 = 65536 = 1000 هـ
اذن عندما نصل الرقم 16 تمثل بـ 10 لانه كما قلنا
الاساس هنا 16 وليست 10
ورقم 20 ستعشري تساوي 32 ( 16 * 2 ) في العدد العشري
100 ستعشري تساوي 256 ( 16 ^ 16 = 16 * 16 وليست 10 * 10 )
ولناخذ رقم 1211 ( ستعشري ونري مقابلها فى
النظام العشري يطلع كم ؟ )
| 1 | 16 | 256 * 2 | 4096 |
--------------------------------------------
1 1 2 1
16 ^ 0 * 1 = 0
16 ^ 1 * 1 = 16
16 ^ 2 * 2 = 512
16 ^ 3 * 1 = 4096
= 4625
النظام الثماني Octal or Base8
هذا النظام الاساس
فيها 8 وهو قليل الاستخدام
0 ، 1 ، 2 ، 3 ، 4 ،5 ، 6 ، 7 ، 8
8 ^ 0 = 0
8 ^ 1 = 16 = 20 ثماني
8 ^ 2 = 64 = 100 ثماني
8 ^ 3 = 512 = 1000 ثماني
الخ
التحويل بين بعض انظمة العد
التحويل من العشري الي الستشعري
للتحويل اجر عملية
القسمة علي 16 بشكل متكرر إلي أن يصبح ناتج
القسمة الصحيح بدون باق مساويا صفر، وعنئذ
يمثل باقي القسمة الصحيح في كل مرة رقما
ستشعريا ، الباقي الاول يمثل الرقم الستعشري
الادني والاخير يمثل الرقم الستعشري
الاعلي فمثلا لدينا الرقم 42936 نحوله الي
مقابله الستعشري
العملية ناتج القسمة باقي القسمة الصحيح
الرقم الستعشري
42936/16 2683 8 8 ( الرقم الادني )
2683/16 167 11 B
167/16 10 7 7
10/16 0 10 A ( الرقم الاعلي )
فالرقم العشري 42936 مقابله الستعشري A7B8
( عادة تميز الرقم الستعشري فى نظام ويندووز
باضافة حرف H علي آخره واما فى انظمة يونكس/لينكس
فتضاف x0 ( صفر ثم حرف x أمام الرقم )، أما عندما
تبرمج في دلفي تضاف علامة $ )
التحويل من الستعشري الي
العشري
لتحويل الرقم الستعشري ابدا من الرقم الأعلي
واضرب كل رقم بالعدد 16 ثم اجمع النتائج خلال
ذلك وتذكر انه يتم تحويل الارقام الستعشرية
من A الي F الي مقابلها العشري من 10 حتي 15 فمثلا
نحول الرقم الستعشري A7B8 الي مقابله العشري
ناخذا الرقم الاول وهي A ونضربه بـ 16 10 * 16 = 160
نضيف الرقم الثاني 7 اليه (160+7=167) ثم نضربه بــ
16 167 * 16 = 2672
نضيف الرقم الثالث B وهي (2672+11=2683) ثم نضربه بـ 16
2683 * 16 = 42928
ثم نضيف الرقم التالي وهي 8 42928+ 8 = 42936
التحويل من عشري الي الثنائي
اقسم العدد الي 2 اذا لم
يبق باقي من القسمة ناخذ رقم 0
ثم ناخذ ناتج القسمة السابقة ونقسمها الي 2
ايضا ونري اذا كان هناك باقي القسمة ام الا،
واذا كان هناك باقي القسمة ناخذ رقم 1 والا
ناخذ رقم 0 وهكذا نستمر في القسمة حتي لا يبقي
هناك ناتج
مثلا نحول العدد 238 الي مقابله الثنائي
238 / 2 = 119 : 0
119 / 2 = 59 : 1
59 / 2 = 29 : 1
29 / 2 = 14 : 1
14 / 2 = 7 : 0
7 / 2 = 3 : 1
3 / 2 = 1 : 1
1 / 2 = : 1
0 / 2 : 0
= 11101110 لاحظ اننا حذفنا اول صفر وهي لا قيمة
لها اصلا