البتات والتمثيل · الدرس 24 من 30 · نحو 15 دقيقة
البتات الموقّعة والقيمة الأكبر
افهم NOT واختبر إشارة فرق باستخدام قناع الإشارة.
01 / اشرح
افهم الفكرة
تعكس NOT البتات الـ32 كلها، لا بايتًا فقط: تعطي NOT 255 القيمة −256. تختار AND −2147483648 بت الإشارة في العدد الموقّع ذي 32 بت. إذا كان الفرق صغيرًا، يعني قناع إشارة غير صفري أن الفرق سالب.
لاختيار الأكبر من a وb، احسب a − b واختبر إشارته. إذا كان الفرق سالبًا فاختر b؛ وإلا فاختر a. استخدم هذه الطريقة ضمن نطاق المدخلات الصغيرة الموثّق، لأن التحويل إلى 32 بت قد يفقد معلومات عند الفروق الحسابية الكبيرة.
02 / جرّب
راقب ما يحدث
توقّع −256 ثم 255. راية السالب عرض للحالة، وليست تعليمة شرطية مستقلة للقفز عند السالب.
LOAD 255
NOT
PRINT
NOT
PRINT
HALTاستخدم خطوة لاتّباع تعليمة واحدة في كل مرة. يمكنك تغيير المثال وإعادة تشغيله.
03 / التحدّي
اجعله يعمل
اقرأ عددين صحيحين، كل منهما بين −10,000 و10,000، واطبع الأكبر. استخدم الطرح وقناع إشارة العدد الموقّع ذي 32 بت.
يشغّل الفاحص البرنامج الحالي في محرّرك على آلة جديدة لكل حالة من حالات الاختبار الـ5. ويوفّر المدخلات والذاكرة المهيّأة بنفسه؛ لا تحدّد مخرجات المختبر الحالية ولا ذاكرته نتيجتك.
INPUT
COPY R0 R1
INPUT
COPY R0 R2
LOAD R1
SUB R2
AND -2147483648
#
HALTهل تحتاج إلى تلميح؟
يعني قناع إشارة صفري أن a − b غير سالب، أي أن a أكبر من b أو يساويه.
اعرض حلًا محلولًا
اقرأ البرنامج، وتوقّع أثر كل تعليمة، ثم نفّذه خطوةً خطوة في المختبر.
INPUT
COPY R0 R1
INPUT
COPY R0 R2
LOAD R1
SUB R2
AND -2147483648
JUMP_IF_ZERO first
LOAD R2
JUMP show
first: LOAD R1
show: PRINT
HALTمختبر معالج الرموز التعبيرية
برنامج الرموز التعبيرية
اكتب LOAD أو ADD أو تعليمة أخرى ثم مسافة لإدراج الرمز. يشغّل Ctrl/⌘ + Enter أو يوقف مؤقتًا؛ ويوقف Escape مؤقتًا؛ ويزيد Ctrl/⌘ + ] الإزاحة. ينقل Tab التركيز. تستخدم الوسوم نقطتين رأسيتين. تستخدم القفزات عناوين تعليمات تبدأ من صفر.
خريطة التعليمات ونقاط التوقّف (0)
توقف نقاط التوقّف قبل التعليمة. يتجاوز تشغيل نقطة التوقّف الحالية مرةً واحدة عند الاستئناف؛ وتنفّذ خطوة التعليمة مباشرةً. يمسح تحرير المصدر نقاط التوقّف القديمة وحالة الآلة.
سجلات المعالج
- R0
- 0
- R1
- 0
- R2
- 0
- R3
- 0
- R4
- 0
- R5
- 0
- R6
- 0
- R7
- 0
المكدّسات وأطر الحلقات
SP = 255 − عمق البيانات − عمق الاستدعاءات. المكدّس منفصل عن الذاكرة.
مكدّس البيانات (من الأسفل إلى الأعلى)
فارغ
عناوين عودة الاستدعاءات (من الأسفل إلى الأعلى)
فارغ
أطر الحلقات
فارغ
المخرجات والمدخلات
نفّذ تعليمة PRINT لرؤية المخرجات.
المدخلات في الطابور: فارغ
الذاكرة · 256 بايت · 0 غير صفري
تعرض كل خلية العنوان:القيمة. R = قراءة في هذه الخطوة؛ W = كتابة في هذه الخطوة. اختر خليةً لفحصها أو تهيئتها قبل التنفيذ. استخدم الأسهم للتنقّل، وHome/End للصف، وCtrl/⌘ + Home/End للذاكرة كلها.
سجلّ التنفيذ · 0 عناصر
العناصر الأخيرة أدناه. افحص أي فهرس يبدأ من صفر لرؤية الحالة الكاملة المنفصلة قبل التنفيذ وبعده.
افحص تحدّيك
يمكنك إجراء هذا الفحص في أي وقت. يجب أن تنجح كل حالة لتسجيل الإنجاز.
يستخدم التقدّم localStorage فقط. يبقى في هذا المتصفّح ولا يُرسل إلى أي خادم.