تمثيل البيانات في الكمبيوتر النظام الثنائي | المقال الثالث أساسيات 3
هنتكلم في المقال الثالث عن موضوع من أهم المواضيع ضمن سلسلة أساسيات 3 قبل تعلم البرمجة ألا وهو موضوع تمثيل البيانات في الكمبيوتر راح نتعرف على النظام الثنائي اللي هو binare system (نظام ثنائي) ومن خلال هذا الموضوع هيكون فيه أسئلة وتمارين وحل لنبدأ نفهم هذا النظام وكيف يعمل وكيف تتمثل البيانات في الكمبيوتر.
how to represent data in computer (كيف نمثل البيانات في الكمبيوتر) قبل ما نفهم كيف إحنا بنمثل البيانات في الكمبيوتر لازم نفهم الكمبيوتر كيف يشتغل في المقال الثاني من الأساسيات 3 إتكلمنا إنه CPU اللي هو الـ Central Processing Unit اللي هو الدماغ تبع الكمبيوتر مكون من Transistors وقلنا Transistor هو عبارة عن مفتاح كهرباء يا بيسمح بمرور الكهرباء بيكون On أو بيمنع مرور الكهرباء بيكون off زي كبس الكهرباء عندك في البيت لما بتشغلها أو بتطفيها.
وقلنا إن CPU اللي هو Central Processing Unit مكون من مئات الملايين أو مليارات من Transistors هذه الـ Transistors تستخدم عشان نخزن بيانات فيها لكن إحنا بدنا نتذكر إنه الكمبيوتر لما عرفناه حكينا هو الكمبيوتر is an electronic device هو جهاز إلكتروني يعني ما بتعامل ولا بيفهم إلا لغة الكهرباء فإنت كبني آدم بتكلمة وتعطيه signal (إشارة) يَا on يَا of فمهما كانت لغة البرمجة اللي بتعامل بيها مع الكمبيوتر بتعطيه من خلالها يَا on يَا of.
وهو لا يفهم الإ رقمين ال0 وال1.
والon في الترانزيستر اسمح بمرور الكهرباء ممثلة برقم 1، وال of في الترانزيستر لا تسمح بمرور الكهرباء ممثلة في رقم 0.
وكل شئ بتشوفه في الكمبيوتر سواء ملفات، سواء كانت أرقام، سواء كانت أحرف، سواء صور، سواء فيديوهات، محول للغة الكمبيوتر اللي هي 010110 هذه اللغة بنسميها النظام الثنائي binare system، فالكمبيوتر بيستخدم binare system عشان يمثل المعلومات زي ما بتشوف قدامك في الكمبيوتر كل ما تراه ممثل بالنظام الثنائي ومحول ل 0 و1.
قبل ما نعرف كيف يعمل الbinare system لازم نفهم الفرق بين binary system و decimal system (النظام العشري) نظام decimal system هو النظام اللي انت بتتعامل فيه كل يوم بالأرقام اللي بتتعامل فيها بحياتك سواء حسابك في البنك أو أرقام تليفوناتك أو فواتير الكهرباء اللي بتدفعها.
كل رقم بتمثل بيه في هذه الحياة هو عبارة عن النظام العشري واتسما بالنظام العشري لانه مكون من عشر خانات من صفر لتسعة بتقدر تكون منهم اي رقم في الدنيا، والنظام مكون من آحاد عشرات مئات آلاف مئآت الآلاف ملايين، اللي بيتكون منهم كل الأرقام اللي في الدنيا.
النظام الثنائي يختلف عن النظام العشري سيستم نظام الباينري يحتمل احتمالين يا صفر يا واحد يعني في النظام الباينري ما في رقم اثنين وثلاثة واربعة وخمسة وستة ولا عشرة وعشرين ولا مية فقط صفر أو واحد بيسموه bis two مكرر يا 0 يا 1 احتمالين بس
وقبل ما نعرف كيف بيشتغل النظام الباينري لازم نتعرف على شئ اسمه Bit ال بت عبارة عن خانة صغيرة موجودة في ذاكرة الكمبيوتر بتقبل احتمال من الاحتمالين يا 0 يا 1
إذا البت هو خانة digit binary (رقم ثنائي) يا بتقبل يا صفر يا واحد ما بقدر أخزن فيها رقم 2 ما بقدر أخزن فيها رقم 3 تمام يا صفر يا واحد لما بخزن 0 في الBit الكمبيوتر بيفهم ما عندي كهرباء لما بخزن فيه 1 الكمبيوتر بيفهم عندي كهرباء فالترانزيسترز اللي اتكلمنا عليه لما يجلها 1 بتسمح بمرور الكهرباء لما يجلها 0 لا تسمح.
زي ما اتكلمنا الBit هو الرقم الثنائي الأصغر في بيانات جهاز الكمبيوتر يا بيخزن يا 0 يا 1 لكنه صغير لا استطيع امثل فيه معلومات لان حجمه جدا صغير يعني بيخزن صفر او واحد اعمل بيها إيه.
ما هو الbyte؟
فإذا أنا حطيت 8 Bits جنب بعض بيطلع عندي byte وهي أقل مساحة ممكن أمثل فيها بيانات راح نتعرف على كيف نمثل البيانات في داخل الbyte فإذا الbyte 1 بيت = 8 Bits.
أصغر bit موجود داخل الbyte بيسموه Lowest Significant Bit (LSB) أكبر واحد بيسموه Most Significant Bit (MSB) طب ليه عندي أصغر واحد وكل ما رحت على الشمال بيكبر؟
لأنه القيمة اللي داخله بتكبر طب ما هي القيمة اللي داخله؟
هي مجرد خانات 8 خانات جنب بعض هذه الخانات أول خانة بتمثلي 2 قوة 0 ال2 قوة 0 بالرياضيات (قيمتها) بتعطيني 1
بالرياضيات بتعطيني يعني (قيمتها) في الأرقام التي نفهمها نحن، قوة كذا يعني 2 في 1 = 2
الخانة اللي بعدها بتمثل لي 2 قوة 1 بالرياضيات بتعطيني 2
الخانة اللي بعدها بتمثل لي 2 قوة 2 بالرياضيات بتعطيني 4
الخانة اللي بعدها بتمثل لي 2 قوة 3 بالرياضيات بتعطيني 8
الخانة اللي بعدها بتمثل لي 2 قوة 4 بالرياضيات بتعطيني 16
الخانة اللي بعدها بتمثل لي 2 قوة 5 بالرياضيات بتعطيني 32
الخانة اللي بعدها بتمثل لي 2 قوة 6 بالرياضيات بتعطيني 64
الخانة اللي بعدها بتمثل لي 2 قوة 7 بالرياضيات بتعطيني 128
آخر قيمة 128 تسمى Most Significant Bit (MSB) أكبر قيمة ناتجة عن 2 قوة 7.
والنظام الثنائي يسمى Base 2 لأن قاعدته 2 الاثنين لا تتغير كل ما بتكبر الباور هو اللي بيتغير يعني اثنين قوة اربعة بعدها اثنين قوة خمسة بعدها اثنين قوة ستة بعدها اثنين قوة سبعة لو هكمل اثنين قوة تمانية تسعة عشرة فاذا هو بيس تو لانه الرقم اثنين ما بيتغير القوة هي اللي بتتغير.
وهذه الاماكن في الذاكرة مخزن فيها وبتمثلي 1 2 4 8 16 32 64 128 الرقم بتضاعف Doubling فإذا هذه ميزة الباينيري سيستم إنه الأرقام فيه تضاعف كل ما بتمشي Bit وهذا التضاعف بيعطيني ميزة تخزين كمية كبيرة جدا من المعلومات في مكان صغير من الميموري.
في الصورة السابقة فيه البت 1 وال7 مضاء والباقي مطفي ما هي البيانات المخزنة في هذه الذاكرة؟
قلناإن byte هي ذاكرة عبارة عن ثمانية bit ما الذي مخزن عندي هنا؟
1 يقابله 1 وال7 يقابلة 64
1+64 = 65 فهو مخزنلي 65 فالكمبيوتر لا يفهم الرقم 5 ولا يفهم الرقم 6 ولا يفهم الرقم 65 ولكنه يفهم مقابل الbit 1 رقم 1 ومقابل الbit 7 رقم 64 لما تطلب منه الاثنين يعطيك البيان 65 بعد ما يحوله من النظام الثنائي 0 و 1 ثم لقيمة كل bit مخزنة في الbyte ثم للرقم 65.
كيف نحول من decimal إلى binary؟
يعني من الأرقام اللي إحنا بنستخدمها بحياتنا إلى النظام الثنائي اللي الكمبيوتر بيستخدمه ومبيفهمش غيره.
لو عايز رقم 3 في النظام الثنائي لا أجده فنختار أو bit اللي هيا قيمتها 1 ورقم اثنين اللي قيمته 2 ف1+2=3 كيف نعطيه الأمر نكتب له 00000011 فيعطيني 3 كما شرحنا.
لو عايز رقم ثمانية هل يوجد عندنا رقم ثمانية؟ نعم، عندنا رقم ثمانية كيف نعطيه الأمر 00001000 وهكذا أي رقم إن وجد وإن لم يوجد تنظر الأرقام التي مجموعها يعطي الرقم الذي تريد تحويله للنظام.
نظام الباينري لك فيه احتمال واحد لتحقق الرقم المطلوب فهو عبارة عن احتمالية واحدة تقدر تحصل على اي رقم في الدنيا في نظامنا ممكن تلاقي مليون احتمال تجمع لك رقم واحد لو عايز رقم 2 بجمع 1+1 بجمع 1,5 +5, وهكذا، طيب هذا ما بيفدني انا كمبرمج في الكمبيوتر لما تتعلم برمجة بتقدر تستخدم النظام الباينري انه يمثلك المينيو الخاص بالمطعم يعني لما يجيلك رقم 9 بتفهم انك مطلوب منك بيتزا وشاورما وعصير برتقال من رقم واحد بتقدر تخزن فيه البيانات الثلاثة أو أكثر برقم واحد.
وده بيخلي برنامجي أسرع بدل ما أبعتلك ثلاث ريكورد إنك مطلوب منك شاورما ومطلوب منك بيتزا ومطلوب منك عصير فالبايناري سيستم مهم جدا لسرعة البرنامج.
نعكس الآن.
كيف نحول من binary إلى decimal؟
لو عندي رقم باينري 00000011 عايزي احوله للنظام العشري فالخانات التي مثلت عبارة عن 2+1=3
قولنا إن byte مكون من 8 bit ما اكبر رقم ممكن انا احصله من مجموعهم ال 1 بايت بقدر احصل منه من0 إلى 255 ما بقدر أمثل منه 256 ولا أكثر من ذلك.
لو عايز امثل رقم 257 نضع اثنين byte بجانب بعض لكن نركز أن الثاني يبدء من العدد المضاعف 9 هو 2 قوة 8 = 256 وهلما جر في الأرقام الأكثر من الاثنين فرقم 257 بالنظام الثنائي هو100000001 كيف وجدناه ننظر هل الرقم موجود لأ لا يوجد رقم فردي في الباينري غير الرقم 1 يبقى هو مجموع رقمين أو أكثر وهكذا أي رقم والأصفار اللي على الشمال ليس لهم قيمة.
ما هو اكبر رقم انا ممكن امثله في 2 بايتز جنب بعض مجموع الارقام 65535 الأول بس 255 اللي بعده 65535 فرق شاسع بين 255 و 65535 فهذا هو قوة نظام الباينري أنه بتضاعف بشكل كبير وهذه المضاعفات بتخليني أخزن معلومات أكبر في مساحة صغيرة.
كيف أمثل الأحرف؟
قولنا أن الكمبيوتر ما بيفهم غير 0 و1 وقدرنا نمثل أرقام فيه بسهولة طيب كيف أمثل أحرف فيه إشي اسمه ASCII Code و UNI Code.
ASCII Code تعني (الكود القياسي الأمريكي لتبادل المعلومات)
الجماعة فكروا وقالوا إحنا قدرنا نمثل أرقام في الكمبيوتر وما نقدر نتعامل معه غير بلغة الأرقام تمام فبالتالي هم عملوا جدول صغير سموه ASCII كود حطوا حرف A وعطوا رقم 65 وحرف B أعطوه رقم 66 وكذلك الأمر إلى Z رقمه 90 في الـ ASCII كود فكل حرف صار له رقم.
وكمان الـ A small تختلف عن الـ A capital صح الـ A small أعطوها 97 وال Z عطوها 122 هذا الجدول مش لازم تحفظه بس تفهم ان فيه لكل حرف رقم مقابله طيب انا كيف امثل حرف الـA هلأ بالكمبيوتر عادي بقول لك روح على ASCII code شوف حرف A capital هو قديش رقمه رقمه 65 ال 65 كيف امثلها كما سبق بنفس النظام.
رابط جدول الأسكي مش لازم تحفظه هو موجود تمام وقت ما تريده بتلاقيه.
نحن نخزن الرقم 65 وبنخزن الحرف بنفس الرقم كيف يميز الكمبيوتر أن المخزن هنا رقم أو حرف؟
الكمبيوتر لا يميز بينهم إلا من خلال السياق حسب الـ context حسب السياق أعطيك مثال لو قلت لك 44 هتقولي إيه 44 أنا قلت لك 44 أنت مش فاهم أما لو قلت عمري 44 هتفهم فبالتالي الكمبيوتر ما بيميز اللي متخزن هنا هو رقم 65 ولا حرف A ولا لون هو بيخزنهم بنفس الطريقة من خلال السياق لو بتستخدمهم برنامج بيميزمن خلاله whatever (أياً كان)
فالكمبيوتر لا يفهم إلا النظام الثنائي وكل شئ له رمزه في الباينري حتى المسافة الفارغة وهذا النظام الثنائي الباينري بنسميه ماشين لانجوش 0110 0110 عبارة عن 0 و 1 ولغات البرمجة محولة من ال0 و 1 إلى اللغة التي تكتب بها.
ويصعب قراءة هذا النظام جدا عشان كدة اخترعوا الهيكسا ديسمل اللي هو نظام السادس عشر عشان يسهلوا علينا قراءة البايناري>
كيف أمثل الحروف العربية؟
اتكلمنا عن الـ ASCII Code الـ ASCII Table فيه الحروف الأجنبية يوجد شيء يسمى UNI Code ما هو كما قلنا الاسكي كود هو جدول نضع فيه حروف أجنبية ولا يوجد فيه حروف عربية لذلك ستواجه مشكلة في البرمجة في حياتك التي هي كالتالي إذا جئت تطبع اسم محمد أو أي شيء بالعربي سيطبع لك:
فهو لا يعرف حرف الميم اللي بالعربي كيف يمثلها فبالتالي إذا بطلع عندك كدة أعرف إنه عندك مشكلة في الUnicode عشان نحل المشكلة اخترعوا اخترعوا الUnicode نظام عالمي لتمثيل البيانات وترميز الأحرف، حطوا كل حرف بكل لغة في العالم له كود يعني اللغة الصينية فيها خمسة آلاف حرف موجود لكل واحد كود، زي الـ ASCII كود بس هو شيء كبير فيه كل الأحرف اللي في العالم بكل اللغات، حتى الـ Special Characters حتى الـ Emojis اللي بتبعتها في الـ WhatsApp كلها ممثلة و لها كود معين.
الفرق بين الـ ASCII Standard و الـ Unicode؟
00:31:15 الـ ASCII اللي هو American Standard Code for Information Interchange (الكود الأمريكي القياسي لتبادل المعلومات) الـ Unicode هو Universal Coding System (نظام الترميز العالمي) نظام عالمي لتمثيل البيانات
الـ ASCII هو صغير جدا فيه الأحرف الإنجليزي وشوية special characters (شخصيات خاصة) عشان كدة مساحته قليلة لكن الـ Unicode فيه support (يدعم) كل اللغات.
الـ ASCII في منه نسختين واحدة 7-bit فيها 128 حرف وواحدة 8-bit الأكبر فيها 256 حرف.
الUnicode فيه ثلاثة نسخ Unicode UTF-8 وهي 256 حرف و UTF-16 وهي 65,536 ألف حرف و UTF-32 وهي 4,294,967,296 مليار حرف.
فهذا هو الفرق بين Unicode و ASCII Code
واختاروا أن يكون الكمبيوتر بنظام الباينري لكمية الدلتا المهولة التي تتضاعف بسبب هذا النظام، ولو كان بأي نظام آخر كان سيكون في بطئ في الكمبيوتر ولن تجد هذه السرعة.
أسئلة وتمارين؟
ذكرنا بأول مقال في الأساسيات الفرق بين المعرفة والحكمة المعرفة ولازم تمارس بإيدك لتصل للخبرة.
مثلهم بالباينري بعد ما تخلص ارجع اعكسهم من الباينري للديسيمل واكتب الإجابة في التعليقات.
إرسال تعليق