ستأتي عطلة رأس السنة الجديدة قريبًا ، وأخيراً لدي وقت فراغ. أزور العديد من المقالات التقنية كل يوم ، وهذا في حالة رائعة.
قرأت مقالًا عن JS في فترة ما بعد الظهر ، وهناك فقرة مثل هذه لفت انتباهي.
نسخة الكود كما يلي:
(وظيفة () {
أسماء var = [] ؛
وظيفة الإرجاع (الاسم) {
addName (الاسم) ؛
}
وظيفة addName (الاسم) {
إذا (! ~ names.indexof (name)) // إذا كان موجودًا ، فلا تضيف
names.push (name) ؛
console.log (أسماء) ؛ // ["linkfly"]
}
} ()) ('linkfly') ؛
ماذا يعني المشغل "! ~" في if (! ~ names.indexof (name))؟ إذا كنت لا تفهم ، ابدأ بـ ~ أولاً.
يمكن أن تظهر الاختبارات أن قيمة النتيجة لها هذه القاعدة - (x+1)
بعد البحث ، تفقد بعض المقالات جملة واحدة فقط: اقلبها مقلوبة بواسطة بتات ثنائية
من المعنى الحرفي ، هنا نستخدم التمثيل الثنائي المكون من ثمانية أرقام: 3 = 00000011 ، ثم ~ 3 = 11111100 ، الصيغة أعلاه خاطئة.
التفسير أعلاه لا يزال مجردة للغاية وليست محددة. في الواقع ، يتضمن هذا معرفة الكود الأصلي والرمز العكسي والرمز المكملة.
الكود الأصلي
أعلى جزء من تمثيل الكود الأصلي هو بت الإشارة ، وهو 0 للإشارة إلى رقم إيجابي و 1 للإشارة إلى رقم سالب. تمثل البتات المتبقية القيمة المطلقة للرقم.
رمز عكسي
بالنسبة للرقم الموقّع ، فإن الكود العكسي للرقم الموجب هو نفسه الكود الأصلي ؛ الرمز العكسي للرقم السالب هو عكس البتات باستثناء بت الإشارة. غالبًا ما يتم استخدام الرمز العكسي كنموذج وسيطة في عملية العثور على رمز مكملة.
إطراء
تكملة الرقم الإيجابي هو نفس الرمز الأصلي والرمز العكسي ؛ يكمل الرقم السلبي هو عكس الكود الأصلي باستثناء بت الإشارة ، وإضافة 1 إلى آخر شيء ، أي إضافة 1 إلى مكمل الرقم. يتم التعبير عن الأرقام في أجهزة الكمبيوتر بشكل عام في شكل مكمل. في الرمز المكملة ، (-128) D يستخدم بدلاً من (-0) د. ملاحظة: (-128) D لا يحتوي على الكود الأصلي المقابل والرمز العكسي ، (-128) d = (1000،000) ب.
العثور على العمليات التكميلية
لا تنظر العملية المكملة إلى بتات الإشارة ، ولكنها تقلب البتات الأصلية من الكود الأصلي ، وتضيف 1 إلى آخر شيء. مكمل الرقم هو تكملة الرقم المعاكس.
خذ مثال مقالة المؤلف وفهمه
~ يعني انعكاس بت. إذا كان 00111 ، فإنه يصبح 11000 (انعكاس bitwise)
التمثيل الثنائي لـ 57 هو (1 بايت): 00111001
ثنائي بعد انعكاس bitwise (~ 57): 11000110 يتم التعبير عن هذا على أنه عشري: -70
هذا رقم سالب ، رقم موقّع. يجب التعبير عن الأرقام السلبية في الكمبيوتر باستخدام رمزها المكملة: تكملة = يتم قلب بت الرمز ثم إضافة 1.
لذلك ، بعد مقلوبة بت -70 (11000110) بعد bitwise ، يكون (10111001) ثم إضافة 1 ، هو (10111010)
التغيير إلى النظام العشري: -58
لذلك ~ 57 = -58
في هذه المرحلة ، اكتشفت أخيرًا. على الرغم من أن صيغة الملخص يمكن أن ترسم النتائج بسرعة ، إلا أنها لا يمكن أن تشرح السبب. كفنيين ، نود أن ندرس وعمق التفاصيل.
إعطاء الوقت:
الأساس هو حجر الزاوية في جميع المستويات العليا. إذا كنت تكرس نفسك لممارسة الطاوية ، فإن الطريق طويل.
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يتمكن الجميع من الحصول على شيء ما.