سؤال عن تمثيل البيانات في الحاسوب

Albert

لو سمحتوا شباب سؤال بخصوص تمثيل الأعداد في الحاسوب:

هلء أنا إذا دخلت أي رقم إلى الحاسوب مثل 125 رح يتم تحويل هذا الرقم إلى ترميز الأسكي ليصبح كل رقم عبارة عن 7 بتات وبالتالي في حالتنا هذه سوف تكون المساحة المطلوبة لتمثيل هذا الرقم هو 3 ضرب 7=21 بت.

ولنفترض أن ذاكرة الحاسوب(Ram) الذي أعمل عليه =128 mb

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

أرجو التفصيل بالمعلومة.

ومشكوورين.

خيارات عرض التعليق

اختر الطريقة التي تفضلها لعرض التعليقات، ثم اضغط على "احفظ الإعدادات" لتفعل التغيرات.
mpcabd

اسمحلي صححلك المفاهيم Smile

وقت أنت بتدخل قيمة عددية على الحاسب, يعني نحنا هون منقصد أنو في مكان بالذاكرة تم حجزو ووضع القيمة ضمنه, وعادةً القيمة بتكون Integer يعني خلينا نقول على 4 بايتات (32 Bit).

حتى لو كانت القيمة المدخلة هي 0, لكن الحاسب رح يحجز المساحة الكافية لتمثيل العدد 2147483647 في حال كنا عمنحكي عن Integer على 32 بت مع إشارة (والقيمة 4294967295 في حال كان Integer على 32 بت بس بدون إشارة).

إذا ذاكرة الحاسب هي 128 ميغا بايت, فهاد يعني أنها بتتسع لـ 1073741824 بت, إذا اعتبرنا أنو ممكن وضع قيمة عددية بكل هالمساحة, مع أخذ الإشارة بعين الإعتبار, فالقيمة موجودة ضمن المجال التالي:

[-21073741823, +21073741823 - 1]

فأكيد إذا حطيت مليارات يلي ما ممكن تتعدى 240 يعني ما ممكن تتعدى 41 بت ما رح تتعبى الذاكرة عندك.

بدك ما تنس أنو إضافة بت واحد بس على المساحة اللي بدنا نمثل فيها الرقم رح تضرب عدد القيم الممكن تمثيلها بـ 2 Smile

ʃ ¦8<3={| )

Albert

تمام هلء أنا فهمت عليك كلشي بس في سؤالين على كلامك:

1- شو صارت وظيفة جدول الأسكي إذا أي رقم من النوع int رح يتمثل فورا بـ 32بت (مع أنو )

2-نحن إذا حسبنا الـ232=4294967296 وهذا العدد مكون من 10 مراتب وبالتالي رح يكون عدد البتات الطلوب هو 10 ضرب 7=70 بت ولكن في الحقيقة مثل ماقلت هو عم ياخد بس 32بت من الذاكرة بس بقى كيف هيك؟

3-هلء في شغلة وحيدة بس أنا ما اقتنعت فيها أو ما فهمتها ويلي هي:

نحن عم نستخدم 232 لتمثيل أي عدد لا يحوي إشارة ونستخدم 216 لتمثيل العدد الذي يحوي إشارة (لحد هون تمام) بس إذا أنا كانت الذاكرة 128 ميغا مثل ماحكينا فلازم يكون المجال21073741824  في حال عدم أخذ الإشارة و من -2536870912  +2536870912  في حال أخذ الإشارة يعني قصدي منصير مناخد نصف الـ1073741824

صح هالحكي لما لاء ؟؟

يسلموو كثير وعذبتك معي

mpcabd

شو صارت وظيفة جدول الأسكي إذا أي رقم من النوع int رح يتمثل فورا بـ 32بت
(مع أنو )

جدول الأسكي ASCII هو مقابلة بين المحارف والأرقام, مالو أي مهمة تانية غير الترميز Encoding منشان نقدر نرمز الأحرف بالذاكرة, بما أنو الحاسب ما بيفهم غير الأرقام, فمنستعمل الترميز لتحويل المحارف لأرقام وبالعكس. مثال شهير لجدول ترميز ضخم هو الـ Unicode يلي بيحوي كافة المحارف من كل اللغات والكتابات.

نحن إذا حسبنا الـ232=4294967296 وهذا العدد مكون من 10 مراتب
وبالتالي رح يكون عدد البتات الطلوب هو 10 ضرب 7=70 بت ولكن في الحقيقة مثل
ماقلت هو عم ياخد بس 32بت من الذاكرة بس بقى كيف هيك؟

طريقتك بحساب عدد البتات المطلوبة لتمثيل العدد خطأ, إذا عندك عدد بدك تعرف كم بت بدك لتمثلو ثنائياً بدك تشوف اللوغاريتم تبع العدد بالأساس 2. إذا أخدت log2 429496729 رح يطلع معك الجواب هو 32.

نحن عم نستخدم 232 لتمثيل أي عدد لا يحوي إشارة ونستخدم 216
لتمثيل العدد الذي يحوي إشارة (لحد هون تمام) بس إذا أنا كانت الذاكرة 128
ميغا مثل ماحكينا فلازم يكون المجال21073741824  في حال عدم
أخذ الإشارة و من -2536870912  +2536870912  في حال
أخذ الإشارة يعني قصدي منصير مناخد نصف الـ1073741824

صح هالحكي لما لاء ؟؟

لاء للأسف الحكي مو صح. بالحاسب إذا كان عندي N بت لمثيل عدد, فعندي خيارين:

  1. بمثل عدد دون إشارة وبالتالي أصغر قيمة قابلة للتمثيل هي الـ 0 وأكبر قيمة هي القابلة للتمثيل هو
    2N
  2. بمثل عدد مع إشارة باستعمال طريقة المتمم إلى 2, وبالتالي في بت واحد من الـ N بت رح تكون مهمتو أنو يبين هل العدد سالب أم موجب, وبالتالي بيبقى قدامي N - 1 بت لمثل فيهم العدد, وإذا بدنا الصفر يكون إلو تمثيل وحيد فرح يطلع مجال الأعداد القابلة للتمثيل هو
    [-2N - 1, +2N - 1 - 1]

ʃ ¦8<3={| )

Albert

خلص تمام هلء فهمت كلشي.

يسلمو هالأدين وعذبتك معي كثير سيدنا.

homam85

السلام عليكم ..0

تمثيل الأعداد بالحاسب لا يتم بهذه الطريقة(ascii) بل تمثل بقيمتها الثنائية( لسهولة إجراء العمليات الحسابية عليها )  وتضاف خانة أخير من اليسار للدلالة على الإشارة 0 موجب 1 سالب

 

ولتمثيل الأعداد الكبيرة جدا نستخدم مفهوم الفاصلة الثابتة أوالعائمة

مبدأ هذه الطريقة بشل عام

فمثلا العدد 13000000=13*10^6 فلماذا نخزن هذا العدد ثنائيا

بل نخزن أن الأساس هو 10

والأس هو 6

وكل ضرب 13

أم ascii لدلالة على المحرف وتستخدم لتجميع كل 7أو8 بتات في محرف واحد لتمثيل الملفات على المحررات

بإضافة إلى دورها في لوحة المفاتيح لتعرف على الحرف المدخل ومقاطعة وحدة المعالجة وغير ذالك