أكثر من المشغل في المنطق المنطقي (البوابات المنطقية)

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

  •  23-09-2019
  •  | 
  •  

سؤال

في الأساس ، لديّ رقمان ثنائيان غير موقّعين 8 بت وأحتاج إلى استخدام منطق منطقي لمعرفة أيهما أكبر ولا يمكنني معرفة من أين أبدأ. باستخدام البوابات المنطقية ...

من المفترض أن أقوم بتحليل كل بت ومعرفة أي واحد أكبر ولكن كيف يمكنني جمع كل شيء معًا؟

لنفترض أن لدي x و y وأردت أن أعود بشكل صحيح إذا كانت x <y (x و y هي أرقام ثنائية غير موقعة 8bit). كيف لي أن تذهب عن القيام بذلك؟

فكرت في العثور على أي شيء أكثر أهمية ، ولكن ماذا لو كانا متماثلين؟

أي شخص حصل على أي أفكار؟

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

المحلول

فكرت في العثور على أي شيء أكثر أهمية ، ولكن ماذا لو كانا متماثلين؟

يمكنك المتابعة من "أهم بت" وصولاً إلى "أقل أهمية" حتى يكون هناك اختلاف. الرقم مع البت الأول إلى "1" هو أعظم.

لتنفيذ هذا ، استخدم "سجل Shift" لكل رقم ومقارنة لـ Bits "Out" من SR.

نصائح أخرى

أنت جزء من هناك. نعم ، ابدأ من الشيء الأكثر أهمية. إذا كانا متماثلين ، انتقل إلى الجزء التالي (يتحرك يمينًا ، نحو البت الأقل أهمية). عندما تجد قليلاً تم تعيينه (والآخر ليس) ، هذا هو الرقم الأكبر.

في الواقع ، أنت على المسار الصحيح. قارن أولاً أهم بت. إذا لم تكن متساوية ، فيمكنك بالفعل إخراج النتيجة أو بطريقة أو بأخرى. إذا كانت متساوية ، فأنت فقط تخرج نتيجة لمقارنة ثانيا البت الأكثر أهمية. وهكذا حتى أقل بت الأهمية. عودة بطريقة ما. في النتيجة ، سيكون لديك نفس التكوين للبوابات المتكررة لكل بت ، باستثناء آخر واحد سيكون له تباين طفيف (لأنه لا يوجد المزيد بعد ذلك).

إذا كان الجزء العلوي من واحد هو "أكبر" (أي: إنه 1 والآخر هو 0) ، فمن العدد هو الرقم الأكبر.

إذا كانوا متماثلين ، فقم بإجراء نفس الاختبار في الجزء التالي.

لذا ، فأنت تريد شيئًا مثل هذا الرمز الزائف الذي يشبه C (التظاهر بأن لدينا البتات في المصفوفات مع أهمها في الموضع 0):

// true iff x > y
(x[0] == 1 && y[0] == 0) 
|| (
  (y[0] == x[0]) 
  && (the entire expression all over again, but with [n+1] instead of [n])
)

بالنسبة لحالتك الأساسية (أي: عندما لا يكون هناك مزيد من البتات للاختبار) ، استخدم خطأً أو صحيحًا اعتمادًا على ما إذا كنت تريد> أو> =.

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