• 0
هاني الأتاسي

سلسلة - شغل مخك (9)

سؤال

كيف توجد القيمة الوسطى لعددين من غير جمع وقسمة ..

أي أريد حساب

(a+B)/2

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

9 إجابة على هذا السؤال .

  • 0

ممكن استخدام ازاحات بس لا أريد عملية جمع .. لأن الجمع ممكن أن ينتج عنه overflow ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

[Code2]

إذا كان a>b

(a+B)/2 = (a - b +2b)/2 = (a-B)/2 + b

[/Code2]

بهالطريقة ما رح ينتج عندك overflow

:P

كمل لحالك :P :P :P

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

:) محاولة جيدة وتفكير منطقي حلو ...

بس جرب هذا

a = -2147483647;

b = 5;

avg = ((a-B)>>1) + b;

cout ;)

يفضل التعامل على مستوى البتات

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مساعدة :

الحل يعتمد على تركيب دارة الجامع ... ;)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الحل ياشباب ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

بدي أحط الحل بعدين وأخصركم محاولة تشغيل المخ ؟؟ :P

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

حسنا تأخرتو كثيرا بالحل لذلك سوف أضع الحل :::

دارة الجامع النصفي عبارة عن التالي : ( دخلها a , b ) وخرجها ( s , c )

a و b عبارة عن البتين الذان نريد جمعهما وال s عبارة عن نتيجة الجمع و c عبارة عن الحمل الذي سوف نجمعه مع ال البتين التاليين ..

معادلة s هي أن النتيجة واحد عندما يكون أحد البتين 1 أو :


s = a XOR b

والحمل ينتج لدينا إذا كان البتين هما واحد أي ببساطة هذه هي المعادلة :


c = a AND b

الآن من أجل تطبيق دارة الجمع كاملة يجب أن نجمع الحمل مع البتات التالية وهذا يقتضي ازاحة كالتالي :


sum32 = a XOR b + ((a AND B) SHL 1)

الازاحة على اليمين هب عبارة عن ضرب ب 2 كما نعرف . الآن من أجل أخذ المتوسط نكتفي بقسمة القيمة السابقة على 2 فتختفي الازاحة على اليمين وينتج عندنا ازاحة أخرى كالتالي :


sum32/2 = ((a XOR B) SHR 1) + a AND b

وهي المعادلة التي نحصل من خلالها على متوسط من غير أن نحصل على أي overflow .. وممكن أن نكتبها بالسي كالتالي :


avg = (a^b >> 1) + a&b;

:):)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

100%(f)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .