هل هذا خطأ في كتاب بنية الكمبيوتر الخاصة بي؟

StackOverflow https://stackoverflow.com/questions/1726059

  •  19-09-2019
  •  | 
  •  

سؤال

أنا أعمل على HW بنية الكمبيوتر وصعدت المشكلة التالية:

A = 247.
ب = 237.

1) افترض أن A و B يتم توقيعها بأعداد صحيحة من 8 بت مخزنة بتنسيق مكملا اثنين. حساب + ب باستخدام الحساب المشبع. يجب كتابة النتيجة في عشري. اظهر عملك.
2) افترض أن A و B تعد أعداد صحيحة 8 بت مخزنة بتنسيق Two's Compelemnt. حساب A - B باستخدام الحساب المشبع.

الآن، كيف هي هذه الأسئلة الصحيحة؟ أعرف ما هو الحساب المشبع، ولكن كيف يتم سصاله أن نقول أن 247 و B هو 237 عندما لا يمكن تمثيلها برقم تكملة 8 بت؟

أدرك أن نقطة الحساب المشبعة موجودة في حالة فائض / لا يكفي لتعيين جميع البتات إلى القيمة القصوى، لكنها لا معنى لي أن أسأل سلسلة من الأسئلة (هناك 3 أكثر مع هذه المشكلة نفسها) إشراك أرقام حسابية لا يمكن تمثيلها في الشكل الذي يحددونه.

هل أنا مخطئ هنا؟

هل كانت مفيدة؟

المحلول

التفسير الوحيد الذي يجعل الشعور هو أن القيم المقدمة هي غير موقعة تفسير الرقم المعني؛ من الواضح أن القيم أكبر من 127 من الواضح أنها خارج نطاق قيمة تكملة 8 بت موقعة. أوافق على أن السؤال قد تم ذكره بشكل سيء.

نصائح أخرى

أنا لا أعرف، لكنها ربما أن يسأل: "تحويل الرقم العشري 237 إلى عدد صحيح 8 بت. الآن تفسير تلك البتات كعدد استكمال ثنائي 8 بت وضيفها".

كيندا مثل قول، في ج:

char a = 237;
printf("%x %d\n",a, a);

التي تجمع ويمنحك القيم التي تتوقعها بناء على تفسير مكملتين من القيمة 8 بت "237"

تبدو خاطئة بالنسبة لي. يمكن أن تكون أعداد صحيحة تكملة تكملة 8 بت من -128 و 127. يجب أن يؤدي أي محاولة لتعيين ثابت 237 أو 247 إلى متغير مكملا لشخصين موقعة 8 بت، اعتمادا على لغتك.

إذا كانت المشكلة "افترض أن A و B يتم تخزينها في عدد صحيح موقعة 8 بت"، فسيؤدي ذلك إلى معنى. تخزين A = 247 في عدد صحيح 8 بت موقد يؤدي إلى قيمة -9، تخزين B = 237 تعطي قيمة -19. خلاف ذلك، فإنه لا معنى له. عدد صحيح 8 بت الموقع لا يمكن أن يكون له قيمة 247 أو 237.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top