الإزاحة الثنائية والتلاعب بالبتات
| English | العربية |
|---|---|
| bit/bɪt/ | بت |
| mask/mæsk/ | قناع |
| logical shift/ˈlɒdʒɪkl ʃɪft/ | إزاحة منطقية |
| sign bit/saɪn bɪt/ | بت الإشارة |
| arithmetic right shift/ˌærɪθˈmetɪk raɪt ʃɪft/ | إزاحة يمنية حسابية |
| cyclic shift/ˈsaɪklɪk ʃɪft/ | إزاحة دورية |
الضرب على شريحة لا تستطيع الضرب
- لم يكن المعالج المستخدم في Game Boy عام 1989 يحتوي على أي تعليمة ضرب على الإطلاق. تم مضاعفة كل نتيجة وكل إحداثيات تحتاج إلى مضاعفة عن طريق إزاحة بتاتها مكانًا واحدًا لليسار.
- تأخذ الإزاحة نبضة ساعة واحدة. الضرب المبني من الإزاحات والجمع هو كيف عملت تلك الألعاب على بضعة كيلوبايتات وبضع مليواتت.
- نفس الحيل تتحكم في الأسلاك المفردة في الجهاز المدمج: بت واحد من المسجل لكل مستشعر أو محرك، يتم فحصه وضبطه باستخدام قناع.
- هذه الدرس يغطي ثلاثة أنواع من الإزاحة وأربع عمليات قناع، ضمن تعليمات الامتحان الخاصة.
الإزاحات المنطقية
- الإزاحة المنطقية تحرك كل بت يسارًا أو يمينًا بمقدار عدد معين من المواقع وتملأ المواقع الشاغرة بـ 0.
LSL #1تحرك البتات يساراً ويدخل 0 من اليمين: للرقم غير الإشارةي يكون هذا × 2.LSR #1تحركها يميناً ويدخل 0 من اليسار: قسمة صحيحة ÷ 2.- الإزاحة بمقدار $n$ أماكن تضرب أو تقسم بـ $2^{n}$.
00001011(11) بعدLSL #1تصبح00010110(22)؛ بعدLSR #1تصبح00000101(5، المفقود).

إزاحة منطقية يسرى (× 2)، إزاحة منطقية يمنى (÷ 2) وإزاحة حسابية يمنى (تحافظ على بت الإشارة)
ازح وقلِّص بتات البايت
اختر عاملاً وعقب كل بت ناتج. الإزاحة اليسرى (<<) moves every bit up one place (×2); a right shift (>>) تنقلها لأسفل (÷2)؛ والـ AND مع قناع يُفرغ البتات التي لا تريدها.
القيمة ذات الـ 8 بت 00001011 (11) تُزاح يساراً بمقدار 1 (LSL #1). ما هي القيمة العشرية الجديدة؟
الإزاحة اليسرى بمقدار 1 تضرب في 2: $11 \times 2 = 22$ (00010110).
إزاحة عدد غير مطلق يساراً بمقدار 3 مواضع تضربه في أي رقم؟
الإزاحة بمقدار $n$ مواضع تضرب في $2^n$، لذا الإزاحة بمقدار 3 مواضع هي $2^3 = 8$.
مثال محلل: عندما يتوقف × 4 عن كون صحيحًا
- البتات التي تخرج من النهاية تضيع، لذا يكون الضرب صحيحًا فقط طالما أنها كانت أصفارًا.
LSL #2على بايت التكميم الثنائي11001010يعطي00101000. بتا 1 اللذان سقطا من اليسار ضيعا، تغير بت الإشارة، والنتيجة لم تعد أربعة أضعاف الأصل.LSL #2على00001011(11) يعطي00101100(44)، وهو صحيح، لأن الأصفار فقط قد ضاعت.- يطلب الامتحان كلاهما: النمط المزاح، وتعليق حول ما إذا كانت القيمة لا تزال صحيحة.
الإزاحة اليمنى الحسابية
- الإزاحة اليمنى المنطقية البسيطة تضع 0 في البت الأعلى، مما سيحول الرقم ذو التكميل الثنائي السالب إلى موجب.
- الإزاحة اليمنى الحسابية تنسخ بت الإشارة إلى كل موقع شاغر، بحيث يبقى الرقم سالبًا ولا تزال الإزاحة تقسم على 2.
10011110مزاحة يمينًا حسابيًا بمقدار 3 أماكن هو11110011؛01011100يعطي00001011.

الإزاحة اليمنى المنطقية والحسابية على نفس البايت: differs فقط في البت الداخل
تختلف الإزاحة اليمنى الحسابية عن الإزاحة اليمنى المنطقية لأنها:
إنها تحافظ على بت الإشارة، لذا فإن قسمة عدد موقّع سالب على قوة من 2 تبقيه سالباً.
الإزاحة اليمنى المنطقية تضع دائماً 0 في البت الأعلى، لذا يمكن أن تحول عدداً موقّعاً سالباً إلى موجب.
هذا هو بالضبط سبب الحاجة إلى قسمة موقعة لإزاحة يمين حسابية، which تنسخ بت الإشارة بدلاً من ذلك.
إزاحة يمين حسابية لـ 10011110 بمقدار 3 مواضع تعطي نمط الـ 8 بت ____.
المواضع الثلاثة المتروكة على اليسار تمتلئ بنسخ من بت الإشارة، 1، وتسقط ثلاثة البتات الأيمن 110.
الإزاحات الدائرية
- الإزاحة الدائرية، أو الدوران، تعيد البت الذي يخرج من أحد الطرفين إلى الطرف الآخر، بحيث لا تضيع أي بتات.
- إزاحة يسرى دائرية بمقدار 1 على
10000110تعطي00001101: يظهر 1 في البداية على اليمين. - الإزاحات المنطقية تمتلئ بأصفار، الإزاحات الحسابية تمتلئ ببت الإشارة، الإزاحات الدائرية تمتلئ بالبت الذي خرج. هذا هو الفرق الكامل بين الثلاثة.
تُطبق إزاحة يسرى دورية بمقدار 1 مواضع على 10000110. ما هو الناتج؟
يغادر البت الأول 1 على اليسار ويعيد الدخول على اليمين، لذا لا يُفقَد أي بت. 00001100 ستكون الإزاحة المنطقية.
مثال محلل: 240 أم -16؟
- خذ
11110000. يُقرأ كرقم غير إشارة أنه 240؛ يُقرأ كتكميم ثنائي أنه −16. LSR #1يجلب 0 ويعطي01111000= 120، وهو النصف الصحيح لـ 240.ASR #1ينسخ بت الإشارة ويعطي11111000= −8، النصف الصحيح لـ −16.- لا يوجد منهما خاطئ. كل منهما ينصف القيمة تحت قراءة واحدة، ولهذا يحتاج المعالج لكلا التعليمتين.
أي العبارات حول البايت 11110000 صحيحة؟ حدد كل ما ينطبق.
الناتجان يختلفان فقط في البت الذي يدخل من اليسار: 0 للإزاحة المنطقية، وبت الإشارة للإزاحة الحسابية.
قناع البتات
- الأجهزة المدمجة غالبًا ما تستخدم بتًا واحدًا من المسجل لكل إشارة. القناع هو نمط يُدمج مع المسجل بحيث يتغير فقط بت محدد.
- تعيين بت $n$:
ORمع قناع يحتوي على 1 في موضع $n$. مسح بت $n$:ANDمع قناع يحتوي على 0 هناك و1 في كل مكان آخر. - تبديل بت $n$:
XORمع قناع يحتوي على 1 هناك. اختبار بت $n$:ANDمع ذلك القناع، ثمCMP #0: عدم التساوي يعني أن البت كان مُعيَّنًا.

تعيين باستخدام OR، مسح باستخدام AND، تبديل باستخدام XOR، كل منها يستخدم قناعًا
طابق كل عملية بت مع العامل البتي (والقناع) الذي يقوم بها.
OR يضبط، AND يفرغ، XOR يبدل، وAND + اختبار غير صفري يقرأ بت — حركات القناع الأربعة.
لضبط بت معين إلى 1، تقوم بدمج المسجل مع قناع باستخدام:
OR مع قناع يكون فيه هذا البت = 1 يجبر البت على 1 ويترك الآخرين دون تغيير.
مثال محلول: التعليمات على بايت واحد
- يسجل ACC
10101100. يمكن كتابة القناع#nعشريًا،Bnثنائيًا أو&nسداسي عشر. AND B00001111يعطي00001100: فقط أربعة بتات منخفضة تنجو.OR #1يعطي10101101: البت الأقل أهمية مُعَيَّن ولا يتحرك شيء آخر.XOR &FFيعطي01010011: كل بت معكوس. ثمAND B00001000وCMP #0يختبران بت 3؛ النتيجة00001000ليست صفراً، لذا كان بت 3 مُفعلاً.LSL #2يعطي10110000، بفقدان أعلى بتين؛LSR #3يعطي00010101.
التعليمة التي تضبط أقل بت في ACC إلى 1 وتترك البتات الأخرى دون تغيير هي OR ____.
OR مع قناع يحتوي على 1 فقط في المكان الأخير. Decimal #1، binary B00000001 و hexadecimal &1 هي نفس القناع.
رتب الخطوات لاختبار ما إذا كان البت 3 في ACC مضبوطاً.
القناع، المقارنة، القفز. يترك AND إما 00001000 أو 00000000، والمقارنة مع الصفر تفرق بينهما.
المراقبة والتحكم، بت واحد في كل مرة
- في جهاز مراقبة، يعني بت واحد من المسجل لكل مستشعر أن
ANDواحدة تحقق ما إذا كان مستشعر معين مفتوحًا. - في جهاز تحكم، يُشغّل
ORواحد بت التحكم في المُشغِّل دون إزعاج البتات الأخرى، وANDواحد يُطفئها. - إنه سريع، ويستخدم ذاكرة شبه معدومة، وببايت واحد يمكن حفظ eight حالات تشغيل/إيقاف مستقلة. هذا هو "السبب" الذي يسأل عنه الامتحان.
علامات ضائعة
- الإزاحة اليسرى هي × 2 لكل مكان فقط طالما أن البتات التي تسقط هي أصفار. قل ذلك عند فقدان 1.
- الإزاحة المنطقية اليمنى تُدخل 0؛ الإزاحة الحسابية اليمنى تنسخ بت الإشارة. اختر بناءً على ما إذا كان العدد مُشار إليه بإشارة أم لا.
- لمسح بت، يحتاج القناع إلى 0 عند ذلك البت و1s في كل مكان آخر. قناع من الأصفار entirely يمسح المسجل بأكمله.
XORيُبدل؛ لا يُعيّن. للتعيين استخدمOR، وللاستخدام استخدمANDومقارنته بالصفر.
لقد فهمت الأمر
- الإزاحة المنطقية تمتلئ بـ 0: يسار × 2 لكل مكان، يمين ÷ 2، و1s المفقودة تكسر الحساب
- الإزاحة الحسابية اليمنى تنسخ بت الإشارة؛ الإزاحة الدورية تلف البت حول
- الأقنعة: OR يُعيّن · AND يُمسح · XOR يُبدل · AND ثم CMP #0 يختبر
- بت واحد لكل مستشعر أو مشغِّل يجعل المراقبة والتحكم سريعين وصغيرين؛ تُكتب الأقناعات
#n،Bnأو&n