---
title: "الرقم السحري (البرمجة)"
type: "antipattern"
slug: "magic-number"
url: "http://localhost:3000/ar/antipatterns/magic-number.md"
description: "قيمة عددية ذات معنى غير واضح"
---
# الرقم السحري (البرمجة)

> قيمة عددية ذات معنى غير واضح

في [برمجة الحاسوب](https://en.wikipedia.org/wiki/Computer%5Fprogramming "Computer programming")، يُقصد بـ**الرقم السحري** أو **توقيع الملف** قيمةٌ [عددية](https://en.wikipedia.org/wiki/Numeric "Numeric") [حرفية](https://en.wikipedia.org/wiki/Literal%5F%28computer%5Fprogramming%29 "Literal (computer programming)") في [الشيفرة المصدرية](https://en.wikipedia.org/wiki/Source%5Fcode "Source code") ذات معنى خاص ومحدد لكنه أقل وضوحًا للقارئ. وكذلك في [الحوسبة](https://en.wikipedia.org/wiki/Computing "Computing")، وليس في البرمجة وحدها، يُستخدم المصطلح للإشارة إلى رقم يُعرّف مفهومًا معينًا لكن معناه يبقى أقل من واضح بدون معرفة إضافية. فعلى سبيل المثال، تُعرَّف بعض [صيغ الملفات](https://en.wikipedia.org/wiki/File%5Fformat "File format") برقم سحري مُضمَّن في [الملف](https://en.wikipedia.org/wiki/Computer%5Ffile "Computer file") ). كذلك قد يُصنَّف رقمٌ مرتبطٌ ارتباطًا فريدًا نسبيًا بمفهوم معين، مثل [المُعرّف الفريد عالميًا](https://en.wikipedia.org/wiki/Universally%5Funique%5Fidentifier "Universally unique identifier")، على أنه رقم سحري.

## القيمة الحرفية العددية

الـ**رقم السحري** أو الـ**ثابت السحري** هو قيمة [حرفية](https://en.wikipedia.org/wiki/Literal%5F%28computer%5Fprogramming%29 "Literal (computer programming)") عددية في الشيفرة المصدرية ذات معنى خاص لكنه أقل وضوحًا في سياقه. ويُعدّ هذا [نمطًا مضادًا](https://en.wikipedia.org/wiki/Anti-pattern "Anti-pattern") يخالف واحدة من أقدم قواعد البرمجة، التي تعود إلى أدلة [كوبول](https://en.wikipedia.org/wiki/COBOL "COBOL") و[فورتران](https://en.wikipedia.org/wiki/FORTRAN "FORTRAN") و[PL/1](https://en.wikipedia.org/wiki/PL/1 "PL/1") في ستينيات القرن العشرين.

على سبيل المثال، في الشيفرة التالية التي تحسب السعر بعد الضريبة، يُعدّ `1.05` رقمًا سحريًا لأن القيمة تُرمّز معدّل ضريبة المبيعات، 5%، بطريقة أقل من واضحة.

price_after_tax = 1.05 * price

إن استخدام الأرقام السحرية في الشيفرة يحجب نيّة المطورين من اختيار ذلك الرقم، ويزيد من فرص حدوث أخطاء خفية، ويجعل تكييف البرنامج وتوسيعه مستقبلًا أكثر صعوبة. وكمثال، يصعب معرفة ما إذا كانت كل خانة في `3.14159265358979323846` قد كُتبت بشكل صحيح، أو ما إذا كان من الممكن [اقتطاع](https://en.wikipedia.org/wiki/Truncation "Truncation") هذا الثابت الخاص بـ[باي](https://en.wikipedia.org/wiki/Pi "Pi") إلى `3.14159` دون التأثير في وظيفة البرنامج رغم دقته المنخفضة. إن استبدال كل الأرقام السحرية المهمّة بـ[ثوابت](https://en.wikipedia.org/wiki/Constant%5F%28programming%29 "Constant (programming)") مُسمّاة (تُسمّى أيضًا متغيرات توضيحية) يجعل البرامج أسهل في القراءة والفهم والصيانة.

يمكن تحسين المثال أعلاه بإضافة متغير ذي اسم وصفي:

TAX = 0.05
price_after_tax = (1.0 + TAX) * price

يمكن للاسم الجيد أن ينتج عنه شيفرة أسهل في الفهم على من يصونها وليس مؤلفها الأصلي، بل وحتى على المؤلف الأصلي بعد مرور فترة من الزمن. ومن أمثلة الثابت ذي الاسم غير المفيد `int SIXTEEN = 16`، في حين قد يكون `int NUMBER_OF_BITS = 16` أكثر فائدة.

يمكن للبيانات غير العددية أن تحمل الخصائص السحرية ذاتها، وبالتالي المشكلات ذاتها التي تحملها الأرقام السحرية. لذا فإن التصريح بـ`const string testUserName = "John"` واستخدام `testUserName` قد يكون أفضل من استخدام القيمة الحرفية `"John"` مباشرة.

### مثال

على سبيل المثال، إذا لزم خلط القيم عشوائيًا في مصفوفة تمثّل رزمة قياسية من [أوراق اللعب](https://en.wikipedia.org/wiki/Playing%5Fcards "Playing cards")، فإن هذه [الشيفرة الزائفة](https://en.wikipedia.org/wiki/Pseudocode "Pseudocode") تؤدي المهمة باستخدام خوارزمية [خلط فيشر–ييتس](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates%5Fshuffle "Fisher–Yates shuffle"):

**for** i **from** 1 **to** 52
    j := i + randomInt(53 - i) - 1
    a.swapEntries(i, j)

حيث `a` كائن مصفوفة، والدالة `randomInt(x)` تختار عددًا صحيحًا عشوائيًا بين 1 و_x_ شاملًا الطرفين، وتُبدّل `swapEntries(i, j)` العنصرين _i_ و_j_ في المصفوفة. في المثال السابق، يُعدّ `52` و`53` رقمين سحريين، وليس من الواضح أيضًا كيف يرتبطان ببعضهما. ويُعدّ من الأفضل أسلوبيًا في البرمجة كتابة ما يلي:

_int_ deckSize:= 52
**for** i **from** 1 **to** deckSize
    j := i + randomInt(deckSize + 1 - i) - 1
    a.swapEntries(i, j)

وهذا أفضل لعدة أسباب:

* **قابلية قراءة أفضل**. قد يتساءل مبرمج يقرأ المثال الأول: _ماذا يعني الرقم 52 هنا؟ ولماذا 52؟_ قد يستنتج المبرمج المعنى بعد قراءة الشيفرة بعناية، لكنه ليس بديهيًا. وتصبح الأرقام السحرية مربكة بوجه خاص عندما يُستخدم الرقم نفسه لأغراض مختلفة في قسم واحد من الشيفرة.
* **أسهل في الصيانة**. من الأسهل تغيير قيمة الرقم لأنها غير مكررة. إن تغيير قيمة رقم سحري عُرضة للخطأ، لأن القيمة نفسها كثيرًا ما تُستخدم عدة مرات في أماكن مختلفة داخل البرنامج. كذلك، عندما يحمل متغيران أو رقمان متمايزان دلاليًا القيمة نفسها، فقد يُعدَّلان معًا عرضًا. ولتعديل المثال الأول كي يخلط رزمة [تاروت](https://en.wikipedia.org/wiki/Tarot "Tarot")، التي تضم 78 ورقة، قد يستبدل المبرمج بسذاجة كل ظهور للرقم 52 في البرنامج بالرقم 78\. وهذا يسبب مشكلتين. أولاً، سيُغفِل القيمة 53 في السطر الثاني من المثال، مما يجعل الخوارزمية تفشل بطريقة خفية. ثانيًا، من المرجح أن يستبدل الحرفين «52» في كل مكان، بصرف النظر عمّا إذا كانا يشيران إلى حجم الرزمة أو إلى شيء آخر مختلف تمامًا، كعدد أسابيع السنة في التقويم الميلادي، أو على نحو أكثر خبثًا، أن يكونا جزءًا من رقم مثل «1523»، وكل ذلك من شأنه أن يُدخل أخطاءً برمجية. وعلى النقيض، فإن تغيير قيمة المتغير `deckSize` في المثال الثاني سيكون تغييرًا بسيطًا في سطر واحد.
* **يشجّع على التوثيق**. يوفّر المكان الوحيد الذي يُصرَّح فيه عن المتغير المُسمّى موضعًا جيدًا لتوثيق ما تعنيه القيمة ولماذا حملت القيمة التي حملتها. أما وجود القيمة نفسها في عدد وفير من الأماكن فإما أن يؤدي إلى تعليقات مكررة (وما يصحبها من مشكلات عند تحديث بعضها وإغفال بعضها الآخر)، أو لا يترك أيّ مكانٍ _واحد_ يكون فيه من الطبيعي للمؤلف أن يشرح القيمة ومن المرجح أن يبحث فيه القارئ عن شرح.
* **يجمّع المعلومات**. يمكن وضع تصريحات متغيرات «الأرقام السحرية» معًا، عادةً في أعلى دالة أو ملف، مما يسهّل مراجعتها وتغييرها.
* **يكشف [الأخطاء المطبعية](https://en.wikipedia.org/wiki/Typo "Typo")**. إن استخدام متغير (بدلًا من قيمة حرفية) يستفيد من فحص المترجم. فكتابة «62» عرضًا بدلًا من «52» ستمرّ دون كشف، في حين أن كتابة «`dekSize`» بدلًا من «`deckSize`» ستؤدي إلى تحذير المترجم بأن `dekSize` غير مُصرَّح به.
* **يقلّل من الكتابة**. إذا كانت [بيئة التطوير المتكاملة](https://en.wikipedia.org/wiki/Integrated%5Fdevelopment%5Fenvironment "Integrated development environment") تدعم [إكمال الشيفرة](https://en.wikipedia.org/wiki/Code%5Fcompletion "Code completion")، فستملأ معظم اسم المتغير انطلاقًا من أحرفه القليلة الأولى.
* **يسهّل المعاملة الوسيطية**. على سبيل المثال، لتعميم المثال أعلاه إلى إجراء يخلط رزمة بأي عدد من الأوراق، يكفي تحويل `deckSize` إلى وسيط لذلك الإجراء، في حين أن المثال الأول سيتطلب عدة تغييرات.

**function** shuffle (**int** deckSize)
   **for** i **from** 1 **to** deckSize
       j := i + randomInt(deckSize + 1 - i) - 1
       a.swapEntries(i, j)

أما العيوب فهي:

* **يكسر المحلّية**. عندما لا يُعرَّف الثابت المُسمّى قرب موضع استخدامه، فإن ذلك يضرّ بمحلّية الشيفرة وبالتالي بقابليتها للفهم. إن وضع الرقم 52 في مكان قد يكون بعيدًا يعني أنه لفهم آلية عمل حلقة «for» فهمًا كاملًا (مثلًا لتقدير زمن تشغيل الحلقة)، يجب على المرء تتبّع التعريف والتحقق من أنه الرقم المتوقَّع. ومن السهل تجنّب ذلك (بإعادة موضع التصريح) عندما يُستخدم الثابت في جزء واحد فقط من الشيفرة. أما عندما يُستخدم الثابت المُسمّى في أجزاء متفرقة، فإن الموقع البعيد يكون دلالةً للقارئ على أن القيمة نفسها تظهر في أماكن أخرى من الشيفرة، وقد يستحق ذلك النظر فيه أيضًا.
* **يسبّب الإطناب**. يضيف تصريح الثابت سطرًا. وعندما يكون اسم الثابت أطول من قيمته، خاصةً إذا ظهرت عدة ثوابت من هذا النوع في سطر واحد، فقد يستلزم ذلك تقسيم عبارة منطقية واحدة من الشيفرة على عدة أسطر. وقد تكون الزيادة في الإطناب مبرَّرة عندما يكون هناك احتمال للبس حول الثابت، أو عندما يكون هناك احتمال لحاجة الثابت إلى التغيير، مثل [إعادة استخدام](https://en.wikipedia.org/wiki/Code%5Freuse "Code reuse") روتين خلط لألعاب ورق أخرى. وقد تكون مبرَّرة بالقدر نفسه باعتبارها زيادة في القدرة التعبيرية.
* **اعتبارات الأداء**. قد تكون معالجة التعبير `deckSize + 1` وقت التشغيل أبطأ من القيمة «53». ومع ذلك، فإن معظم المترجمات الحديثة تستخدم تقنيات مثل [طيّ الثوابت](https://en.wikipedia.org/wiki/Constant%5Ffolding "Constant folding") و[تحسين الحلقات](https://en.wikipedia.org/wiki/Loop%5Foptimization "Loop optimization") لحلّ عملية الجمع أثناء الترجمة، لذا لا توجد عادةً عقوبة في السرعة أو تكون مهملة مقارنةً باستخدام الأرقام السحرية في الشيفرة. وعلى وجه الخصوص، يجب موازنة تكلفة التنقيح والوقت اللازم لمحاولة فهم شيفرة غير توضيحية في مقابل تكلفة الحساب الضئيلة.

### الاستخدام المقبول

عندما تفتقر قيمة عددية حرفية إلى معنى خاص، فإن استخدامها لا يُصنَّف على أنه سحري، رغم أن ما يُعدّ خاصًا أمر ذاتي. ومن أمثلة القيم الحرفية التي لا تُعدّ سحرية في الغالب:

* استخدام 0 و1 كقيمتين ابتدائيتين أو تزايديتين في [حلقة for](https://en.wikipedia.org/wiki/For%5Floop "For loop")، مثل `for (int i = 0; i < max; i += 1)`
* استخدام 2 للتحقق مما إذا كان رقم زوجيًا أم فرديًا، كما في `isEven = (x % 2 == 0)`، حيث `%` هو عامل [باقي القسمة](https://en.wikipedia.org/wiki/Modulo "Modulo")
* استخدام القيم الحرفية البسيطة، مثلًا في تعابير من قبيل `circumference = 2 * Math.PI * radius`، أو لحساب [مميِّز](https://en.wikipedia.org/wiki/Discriminant "Discriminant") [معادلة تربيعية](https://en.wikipedia.org/wiki/Quadratic%5Fequation "Quadratic equation") على صورة `d = b^2 − 4*a*c`
* استخدام قوى العدد 10 لتحويل القيم المترية (مثلًا بين الغرامات والكيلوغرامات) أو لحساب قيم النسبة المئوية و[النسبة في الألف](https://en.wikipedia.org/wiki/Per%5Fmille "Per mille")
* الأُسُس في تعابير مثل `(f(x) ** 2 + f(y) ** 2) ** 0.5` من أجل f ( x ) 2 + f ( y ) 2 {\\displaystyle {\\sqrt {f(x)^{2}+f(y)^{2}}}}
* تُستخدم القيمتان الحرفيتان 1 و0 أحيانًا لتمثيل القيمتين [المنطقيتين](https://en.wikipedia.org/wiki/Boolean%5Fdata%5Ftype "Boolean data type") true و false. ويمكن القول إن إسناد هاتين القيمتين إلى اسمين مثل TRUE وFALSE قد يكون أفضل.
* في لغتي C وC++، كثيرًا ما يُستخدم 0 للدلالة على [المؤشر الصفري](https://en.wikipedia.org/wiki/Null%5Fpointer "Null pointer") رغم أن مكتبة C القياسية تعرّف ماكرو `NULL` وأن C++ الحديثة تتضمن الكلمة المفتاحية `nullptr`.

## مؤشّر الصيغة

### الأصل

استُخدمت مؤشّرات الصيغة لأول مرة في شيفرة [يونكس الإصدار 7](https://en.wikipedia.org/wiki/Version%5F7%5FUnix "Version 7 Unix") المبكرة.

نُقل [يونكس](https://en.wikipedia.org/wiki/Unix "Unix") إلى أحد أوائل حواسيب [DEC](https://en.wikipedia.org/wiki/Digital%5FEquipment%5FCorporation "Digital Equipment Corporation") من طراز [PDP-11](https://en.wikipedia.org/wiki/PDP-11 "PDP-11")/20، التي لم تكن تملك [حماية الذاكرة](https://en.wikipedia.org/wiki/Memory%5Fprotection "Memory protection"). لذا استخدمت الإصدارات المبكرة من يونكس نموذج [المرجع الذاكري القابل لإعادة التوضّع](https://en.wikipedia.org/wiki/Position-independent%5Fcode "Position-independent code"). كانت إصدارات يونكس السابقة لـ[الإصدار السادس](https://en.wikipedia.org/wiki/Sixth%5FEdition%5FUnix "Sixth Edition Unix") تقرأ الملف التنفيذي إلى [الذاكرة](https://en.wikipedia.org/wiki/Magnetic-core%5Fmemory "Magnetic-core memory") وتقفز إلى أول عنوان ذاكرة منخفض للبرنامج، أي [العنوان النسبي](https://en.wikipedia.org/wiki/Relative%5Faddress "Relative address") صفر. ومع تطوير إصدارات يونكس [المُصفَّحة](https://en.wikipedia.org/wiki/Memory%5Fpage "Memory page")، أُنشئت [ترويسة](https://en.wikipedia.org/wiki/Header%5F%28computing%29 "Header (computing)") لوصف مكوّنات [الصورة التنفيذية](https://en.wikipedia.org/wiki/Executable "Executable"). كما أُدرجت [تعليمة تفرّع](https://en.wikipedia.org/wiki/Branch%5Finstruction "Branch instruction") ككلمة أولى في الترويسة لتخطّي الترويسة وبدء البرنامج. وبهذه الطريقة، أمكن تشغيل البرنامج إما في نمط المرجع الذاكري القابل لإعادة التوضّع القديم (العادي) أو في النمط المُصفَّح. ومع تطوير المزيد من الصيغ التنفيذية، أُضيفت ثوابت جديدة بزيادة [إزاحة](https://en.wikipedia.org/wiki/Offset%5F%28computer%5Fscience%29 "Offset (computer science)") التفرّع.

في [الشيفرة المصدرية](https://en.wikipedia.org/wiki/Lions%27%5FCommentary%5Fon%5FUNIX%5F6th%5FEdition,%5Fwith%5FSource%5FCode "Lions' Commentary on UNIX 6th Edition, with Source Code") لـ[الإصدار السادس](https://en.wikipedia.org/wiki/Version%5F6%5FUnix "Version 6 Unix") من مُحمِّل برامج يونكس، كانت الدالة exec() تقرأ الصورة التنفيذية ([الثنائية](https://en.wikipedia.org/wiki/Binary%5Fnumeral%5Fsystem "Binary numeral system")) من نظام الملفات. كانت أول 8 [بايتات](https://en.wikipedia.org/wiki/Byte "Byte") من الملف [ترويسةً](https://en.wikipedia.org/wiki/Header%5F%28computing%29 "Header (computing)") تحتوي على أحجام مناطق البرنامج (النص) والبيانات (العامة) المهيأة. كذلك كانت أول كلمة بحجم 16 بت من الترويسة تُقارن بثابتين [ثابتين](https://en.wikipedia.org/wiki/Constant%5F%28programming%29 "Constant (programming)") لتحديد ما إذا كانت [الصورة التنفيذية](https://en.wikipedia.org/wiki/Executable "Executable") تحتوي على [مراجع ذاكرية قابلة لإعادة التوضّع](https://en.wikipedia.org/wiki/Position-independent%5Fcode "Position-independent code") (عادية)، أو الصورة التنفيذية [المُصفَّحة](https://en.wikipedia.org/wiki/Memory%5Fpage "Memory page") للقراءة فقط المُنفَّذة حديثًا، أو الصورة المُصفَّحة المفصولة الخاصة بالتعليمات والبيانات. ولم يُذكَر الدور المزدوج لثابت الترويسة، لكن البايت الأعلى رتبةً من الثابت كان في الواقع [رمز العملية](https://en.wikipedia.org/wiki/Operation%5Fcode "Operation code") لتعليمة التفرّع في PDP-11 ([ثُماني](https://en.wikipedia.org/wiki/Octal "Octal") 000407 أو [ست عشري](https://en.wikipedia.org/wiki/Hexadecimal "Hexadecimal") 0107). وبإضافة سبعة إلى عدّاد البرنامج يتبيّن أنه إذا نُفِّذ هذا الثابت، فإنه سيُفرّع خدمة exec() في يونكس متجاوزًا ترويسة الصورة التنفيذية البالغة ثمانية بايتات ويبدأ البرنامج.

وبما أن الإصدارين السادس والسابع من يونكس استخدما شيفرة التصفيح، فقد ظلّ الدور المزدوج لثابت الترويسة مخفيًا. أي أن خدمة exec() كانت تقرأ بيانات ترويسة الملف التنفيذي ([الفوقية](https://en.wikipedia.org/wiki/Meta%5F%28prefix%29 "Meta (prefix)")) إلى مخزن مؤقت في [فضاء النواة](https://en.wikipedia.org/wiki/Kernel%5Fspace "Kernel space")، لكنها كانت تقرأ الصورة التنفيذية إلى [فضاء المستخدم](https://en.wikipedia.org/wiki/User%5Fspace "User space")، فلا تستخدم بذلك خاصية التفرّع للثابت. وقد نُفِّذ إنشاء الأرقام السحرية في [رابط](https://en.wikipedia.org/wiki/Linker%5F%28computing%29 "Linker (computing)") و[مُحمِّل](https://en.wikipedia.org/wiki/Loader%5F%28computing%29 "Loader (computing)") يونكس، وربما كان تفرّع الأرقام السحرية ما يزال مستخدمًا في مجموعة [برامج التشخيص](https://en.wikipedia.org/wiki/Diagnostic%5Fprogram "Diagnostic program") [المستقلة](https://en.wikipedia.org/wiki/Standalone%5Fprogram "Standalone program") التي جاءت مع الإصدارين السادس والسابع. وهكذا وفّر ثابت الترويسة وهمًا واستوفى معايير [السحر](https://en.wikipedia.org/wiki/Magic%5F%28programming%29 "Magic (programming)").

في يونكس الإصدار السابع، لم يكن ثابت الترويسة يُختبَر مباشرةً، بل كان يُسنَد إلى متغير يحمل التسمية **ux\_mag** ثم يُشار إليه لاحقًا بـ**الرقم السحري**. وربما بسبب تفرّده، صار مصطلح **الرقم السحري** يعني نوع الصيغة التنفيذية، ثم اتسع ليعني نوع نظام الملفات، ثم اتسع مرة أخرى ليعني أي نوع من الملفات.

### في الملفات

الأرقام السحرية شائعة في البرامج عبر العديد من أنظمة التشغيل. وهي تنفّذ بيانات [قوية النوع](https://en.wikipedia.org/wiki/Strongly%5Ftyped "Strongly typed") وتمثّل شكلًا من [الإشارات داخل النطاق](https://en.wikipedia.org/wiki/In-band%5Fsignaling "In-band signaling") الموجَّهة إلى البرنامج المتحكِّم الذي يقرأ نوع (أنواع) البيانات وقت تشغيل البرنامج. وللعديد من الملفات ثوابت من هذا القبيل تُعرّف البيانات المحتواة فيها. ويُعدّ الكشف عن مثل هذه الثوابت في الملفات وسيلة بسيطة وفعّالة للتمييز بين العديد من [صيغ الملفات](https://en.wikipedia.org/wiki/File%5Fformat "File format") ويمكن أن يُنتج المزيد من [المعلومات](https://en.wikipedia.org/wiki/Information "Information") وقت التشغيل.

أمثلة

* تبدأ ملفات أصناف [جافا](https://en.wikipedia.org/wiki/Java%5Fclass%5Ffile "Java class file") [المترجَمة](https://en.wikipedia.org/wiki/Compiler "Compiler") ([البايت كود](https://en.wikipedia.org/wiki/Java%5Fbytecode "Java bytecode")) وثنائيات [Mach-O](https://en.wikipedia.org/wiki/Mach%5F%28kernel%29 "Mach (kernel)") بالقيمة الست عشرية `CA FE BA BE`. وعند الضغط باستخدام [Pack200](https://en.wikipedia.org/wiki/Pack200 "Pack200") تتغير البايتات إلى `CA FE D0 0D`.
* تحمل ملفات صور [GIF](https://en.wikipedia.org/wiki/GIF "GIF") رمز [آسكي](https://en.wikipedia.org/wiki/ASCII "ASCII") لـ"GIF89a" (`47 49 46 38 39 61`) أو "GIF87a" (`47 49 46 38 37 61`)
* تبدأ ملفات صور [JPEG](https://en.wikipedia.org/wiki/JPEG "JPEG") بـ`FF D8` وتنتهي بـ`FF D9`. وتحتوي ملفات JPEG/[JFIF](https://en.wikipedia.org/wiki/JFIF "JFIF") على [السلسلة المنتهية بصفر](https://en.wikipedia.org/wiki/Null-terminated%5Fstring "Null-terminated string") "JFIF" (`4A 46 49 46 00`). وتحتوي ملفات JPEG/[Exif](https://en.wikipedia.org/wiki/Exif "Exif") على [السلسلة المنتهية بصفر](https://en.wikipedia.org/wiki/Null-terminated%5Fstring "Null-terminated string") "Exif" (`45 78 69 66 00`)، متبوعةً بمزيد من [البيانات الوصفية](https://en.wikipedia.org/wiki/Metadata%5F%28computing%29 "Metadata (computing)") عن الملف.
* تبدأ ملفات صور [PNG](https://en.wikipedia.org/wiki/PNG "PNG") بتوقيع من 8 [بايتات](https://en.wikipedia.org/wiki/Byte "Byte") يُعرّف الملف على أنه ملف PNG ويتيح كشف مشكلات نقل الملفات الشائعة: "\\211PNG\\r\\n\\032\\n" (`89 50 4E 47 0D 0A 1A 0A`). ويحتوي ذلك التوقيع على عدة محارف [سطر جديد](https://en.wikipedia.org/wiki/Newline "Newline") للسماح بكشف تحويلات السطر الجديد التلقائية غير المبرَّرة، كنقل الملف باستخدام [FTP](https://en.wikipedia.org/wiki/File%5FTransfer%5FProtocol "File Transfer Protocol") بـ[نمط النقل](https://en.wikipedia.org/wiki/File%5FTransfer%5FProtocol#Protocol%5Foverview "File Transfer Protocol") _آسكي_ بدلًا من النمط _الثنائي_.
* تحمل ملفات الصوت [MIDI](https://en.wikipedia.org/wiki/MIDI "MIDI") القياسية رمز [آسكي](https://en.wikipedia.org/wiki/ASCII "ASCII") لـ"MThd" (ترويسة مسار MIDI، أي **M**IDI **T**rack **h**ea**d**er، `4D 54 68 64`) متبوعًا بمزيد من البيانات الوصفية.
* قد تبدأ سكربتات [يونكس](https://en.wikipedia.org/wiki/Unix "Unix") أو [لينكس](https://en.wikipedia.org/wiki/Linux "Linux") بـ[شيبانغ](https://en.wikipedia.org/wiki/Shebang%5F%28Unix%29 "Shebang (Unix)") ("#!"، `23 21`) متبوعًا بمسار [المفسّر](https://en.wikipedia.org/wiki/Interpreter%5Fdirective "Interpreter directive")، إذا كان المفسّر يُرجَّح أن يختلف عن ذلك الذي استُدعي منه السكربت.
* تبدأ الملفات التنفيذية بصيغة [ELF](https://en.wikipedia.org/wiki/Executable%5Fand%5FLinkable%5FFormat "Executable and Linkable Format") بالبايت `7F` متبوعًا بـ"ELF" (`7F 45 4C 46`).
* تبدأ ملفات [بوستسكريبت](https://en.wikipedia.org/wiki/PostScript "PostScript") وبرامجها بـ"%!" (`25 21`).
* تبدأ ملفات [PDF](https://en.wikipedia.org/wiki/PDF "PDF") بـ"%PDF" (ست عشري `25 50 44 46`).
* تبدأ ملفات [DOS MZ التنفيذية](https://en.wikipedia.org/wiki/DOS%5FMZ%5Fexecutable "DOS MZ executable") و[جذع EXE](https://en.wikipedia.org/wiki/EXE#Other "EXE") لملفات [PE](https://en.wikipedia.org/wiki/Portable%5FExecutable "Portable Executable") (التنفيذية المحمولة) في [مايكروسوفت ويندوز](https://en.wikipedia.org/wiki/Microsoft%5FWindows "Microsoft Windows") بالحرفين "MZ" (`4D 5A`)، وهما الأحرف الأولى من اسم مصمّم صيغة الملف، [مارك زبيكوفسكي](https://en.wikipedia.org/wiki/Mark%5FZbikowski "Mark Zbikowski"). ويسمح التعريف أيضًا بالتسلسل غير الشائع "ZM" (`5A 4D`) لصيغة dosZMXP، وهي ملف EXE غير PE.
* تُعرَّف صيغة الكتلة الفائقة لـ[نظام بيركلي السريع للملفات](https://en.wikipedia.org/wiki/Berkeley%5FFast%5FFile%5FSystem "Berkeley Fast File System") إما بـ`19 54 01 19` أو `01 19 54` تبعًا للإصدار؛ وكلاهما يمثّل عيد ميلاد المؤلف [مارشال كيرك مكوسيك](https://en.wikipedia.org/wiki/Marshall%5FKirk%5FMcKusick "Marshall Kirk McKusick").
* تحمل [سجلّ الإقلاع الرئيسي](https://en.wikipedia.org/wiki/Master%5FBoot%5FRecord "Master Boot Record") لأجهزة التخزين القابلة للإقلاع في جميع الحواسيب [المتوافقة مع IBM PC](https://en.wikipedia.org/wiki/IBM%5FPC%5Fcompatible "IBM PC compatible") ذات معمارية [IA-32](https://en.wikipedia.org/wiki/IA-32 "IA-32") تقريبًا رمز `55 AA` كآخر بايتين فيه.
* تحمل الملفات التنفيذية لنظامي ألعاب الفيديو المحمولين [Game Boy](https://en.wikipedia.org/wiki/Game%5FBoy "Game Boy") و[Game Boy Advance](https://en.wikipedia.org/wiki/Game%5FBoy%5FAdvance "Game Boy Advance") رقمًا سحريًا بطول 48 بايت أو 156 بايت على التوالي، في موضع ثابت من الترويسة. ويُرمِّز هذا الرقم السحري خريطةً نقطية لشعار [نينتندو](https://en.wikipedia.org/wiki/Nintendo "Nintendo").
* كانت ملفات [Hunk](https://en.wikipedia.org/wiki/Amiga%5FHunk "Amiga Hunk") التنفيذية لبرمجيات [أميغا](https://en.wikipedia.org/wiki/Amiga "Amiga") التي تعمل على أجهزة أميغا الكلاسيكية ذات معالجات [68000](https://en.wikipedia.org/wiki/68000 "68000") تبدأ كلها بالرقم الست عشري ‎$000003f3، المُلقَّب بـ"الكوكي السحري".
* في أميغا، العنوان المطلق الوحيد في النظام هو الست عشري ‎$0000 0004 (موقع الذاكرة 4)، الذي يحتوي على موقع البدء المسمّى SysBase، وهو مؤشّر إلى exec.library، أي ما يُسمّى [نواة](https://en.wikipedia.org/wiki/Kernel%5F%28operating%5Fsystem%29 "Kernel (operating system)") أميغا.
* تحتوي ملفات [PEF](https://en.wikipedia.org/wiki/Preferred%5FExecutable%5FFormat "Preferred Executable Format")، التي يستخدمها [ماك أو إس الكلاسيكي](https://en.wikipedia.org/wiki/Classic%5FMac%5FOS "Classic Mac OS") و[BeOS](https://en.wikipedia.org/wiki/BeOS "BeOS") للملفات التنفيذية لمعالجات [PowerPC](https://en.wikipedia.org/wiki/PowerPC "PowerPC")، على رمز [آسكي](https://en.wikipedia.org/wiki/ASCII "ASCII") لـ"Joy!" (`4A 6F 79 21`) كبادئة.
* تبدأ ملفات [TIFF](https://en.wikipedia.org/wiki/TIFF "TIFF") إما بـ"II" أو "MM" متبوعةً بالعدد [42](https://en.wikipedia.org/wiki/Answer%5Fto%5FLife,%5Fthe%5FUniverse,%5Fand%5FEverything "Answer to Life, the Universe, and Everything") كعدد صحيح من بايتين بترتيب بايتات [صغير أو كبير الطرفية](https://en.wikipedia.org/wiki/Endianness "Endianness"). الحرفان "II" يرمزان لإنتل، التي تستخدم ترتيب البايتات [صغير الطرفية](https://en.wikipedia.org/wiki/Endianness "Endianness")، فيكون الرقم السحري `49 49 2A 00`. والحرفان "MM" يرمزان لموتورولا، التي تستخدم ترتيب البايتات [كبير الطرفية](https://en.wikipedia.org/wiki/Endianness "Endianness")، فيكون الرقم السحري `4D 4D 00 2A`.
* كثيرًا ما تبدأ ملفات [يونيكود](https://en.wikipedia.org/wiki/Unicode "Unicode") النصية المُرمَّزة بـ[UTF-16](https://en.wikipedia.org/wiki/UTF-16 "UTF-16") بـ[علامة ترتيب البايتات](https://en.wikipedia.org/wiki/Byte%5FOrder%5FMark "Byte Order Mark") لكشف [الطرفية](https://en.wikipedia.org/wiki/Endianness "Endianness") (`FE FF` للكبير الطرفية و`FF FE` للصغير الطرفية). وعلى [مايكروسوفت ويندوز](https://en.wikipedia.org/wiki/Microsoft%5FWindows "Microsoft Windows")، كثيرًا ما تبدأ ملفات [UTF-8](https://en.wikipedia.org/wiki/UTF-8 "UTF-8") النصية بترميز UTF-8 للمحرف نفسه، `EF BB BF`.
* تبدأ ملفات الشيفرة الثنائية لـ[LLVM](https://en.wikipedia.org/wiki/LLVM "LLVM") بـ"BC" (`42 43`).
* تبدأ ملفات [WAD](https://en.wikipedia.org/wiki/Doom%5FWAD "Doom WAD") بـ"IWAD" أو "PWAD" (للعبة _[دووم](https://en.wikipedia.org/wiki/Doom%5F%281993%5Fvideo%5Fgame%29 "Doom (1993 video game)")_)، و"WAD2" (للعبة _[كويك](https://en.wikipedia.org/wiki/Quake%5F%28video%5Fgame%29 "Quake (video game)")_)، و"WAD3" (للعبة _[هاف-لايف](https://en.wikipedia.org/wiki/Half-Life%5F%28video%5Fgame%29 "Half-Life (video game)")_).
* تبدأ ملفات [صيغة الملف الثنائي المركّب](https://en.wikipedia.org/wiki/Compound%5FFile%5FBinary%5FFormat "Compound File Binary Format") من مايكروسوفت (المعروفة في الغالب بأنها إحدى الصيغ الأقدم لمستندات [مايكروسوفت أوفيس](https://en.wikipedia.org/wiki/Microsoft%5FOffice "Microsoft Office")) بـ`D0 CF 11 E0`، وهو ما يوحي بصريًا بكلمة "DOCFILE0".
* كثيرًا ما تظهر الترويسات في ملفات [ZIP](https://en.wikipedia.org/wiki/ZIP%5F%28file%5Fformat%29 "ZIP (file format)") في محرّرات النصوص على هيئة "PK♥♦" (`50 4B 03 04`)، حيث "PK" هما الحرفان الأولان من اسم [فيل كاتس](https://en.wikipedia.org/wiki/Phil%5FKatz "Phil Katz")، مؤلف أداة الضغط [PKZIP](https://en.wikipedia.org/wiki/PKZIP "PKZIP") الخاصة بـ[دوس](https://en.wikipedia.org/wiki/DOS "DOS").
* تبدأ الترويسات في ملفات [7z](https://en.wikipedia.org/wiki/7z "7z") بـ"7z" (الرقم السحري الكامل: `37 7A BC AF 27 1C`).

الكشف

يمكن لأداة يونكس `[file](https://en.wikipedia.org/wiki/File%5F%28command%29 "File (command)")` أن تقرأ الأرقام السحرية من الملفات وتفسّرها، ويُسمّى الملف المستخدم لتحليل هذه المعلومات _magic_. وأداة TrID في ويندوز لها غرض مماثل.

### في البروتوكولات

أمثلة

* بروتوكول [OSCAR](https://en.wikipedia.org/wiki/OSCAR%5Fprotocol "OSCAR protocol")، المستخدم في [AIM](https://en.wikipedia.org/wiki/AOL%5FInstant%5FMessenger "AOL Instant Messenger")/[ICQ](https://en.wikipedia.org/wiki/ICQ "ICQ")، يُسبِق الطلبات بـ`2A`.
* في بروتوكول [RFB](https://en.wikipedia.org/wiki/RFB%5Fprotocol "RFB protocol") الذي يستخدمه [VNC](https://en.wikipedia.org/wiki/VNC "VNC")، يبدأ العميل محادثته مع الخادم بإرسال "RFB" (`52 46 42`، اختصارًا لـ"Remote Frame Buffer") متبوعًا برقم إصدار بروتوكول العميل.
* في بروتوكول [SMB](https://en.wikipedia.org/wiki/Server%5FMessage%5FBlock "Server Message Block") الذي يستخدمه مايكروسوفت ويندوز، يبدأ كل طلب SMB أو ردّ من الخادم بـ`FF 53 4D 42`، أو `\xFFSMB` في بداية طلب SMB.
* في بروتوكول [MSRPC](https://en.wikipedia.org/wiki/MSRPC "MSRPC") الذي يستخدمه مايكروسوفت ويندوز، يبدأ كل طلب قائم على TCP بـ`05` في بدايته (يمثّل Microsoft DCE/RPC الإصدار 5)، متبوعًا مباشرةً بـ`00` أو `01` للإصدار الفرعي. أما في طلبات MSRPC القائمة على UDP فيكون البايت الأول دائمًا `04`.
* في الواجهات المُرتّبة لـ[COM](https://en.wikipedia.org/wiki/Component%5FObject%5FModel "Component Object Model") و[DCOM](https://en.wikipedia.org/wiki/Distributed%5FComponent%5FObject%5FModel "Distributed Component Object Model")، المسمّاة [OBJREFs](https://en.wikipedia.org/wiki/OBJREF "OBJREF")، تبدأ دائمًا بتسلسل البايتات "MEOW" (`4D 45 4F 57`). أما امتدادات التنقيح (المستخدمة لاعتراض قنوات DCOM) فتُسبَق بتسلسل البايتات "MARB" (`4D 41 52 42`).
* تبدأ طلبات [مُتعقِّب بِت تورنت](https://en.wikipedia.org/wiki/BitTorrent%5Ftracker "BitTorrent tracker") غير المشفّرة ببايت واحد يحمل القيمة `19` الممثّلة لطول الترويسة، متبوعًا مباشرةً بعبارة "BitTorrent protocol" عند موضع البايت 1.
* تبدأ حركة مرور [eDonkey2000](https://en.wikipedia.org/wiki/EDonkey2000 "EDonkey2000")/[eMule](https://en.wikipedia.org/wiki/EMule "EMule") ببايت واحد يمثّل إصدار العميل. وحاليًا يمثّل `E3` عميل eDonkey، ويمثّل `C5` عميل eMule، ويمثّل `D4` عميل eMule المضغوط.
* تحتوي أول 4 بايتات من كتلة في [سلسلة كتل بيتكوين](https://en.wikipedia.org/wiki/Bitcoin "Bitcoin") على رقم سحري يعمل كمُعرّف للشبكة. والقيمة `D9 B4 BE F9` تشير إلى الشبكة الرئيسية، بينما تشير `DA B5 BF FA` إلى شبكة الاختبار.
* تبدأ معاملات [SSL](https://en.wikipedia.org/wiki/Secure%5FSockets%5FLayer "Secure Sockets Layer") دائمًا برسالة "client hello". ويتكوّن مخطط تغليف السجلّات المستخدم لتسبيق جميع حزم SSL من صيغتي ترويسة بطول بايتين وثلاثة بايتات. وعادةً تُسبَق رسالة client hello في SSL الإصدار 2 بـ`80`، بينما يبدأ ردّ خادم SSLv3 على رسالة client hello بـ`16` (رغم أن ذلك قد يتفاوت).
* تستخدم حزم [DHCP](https://en.wikipedia.org/wiki/DHCP "DHCP") قيمة "كوكي سحري" تساوي `63 82 53 63` في بداية قسم الخيارات من الحزمة. وتُدرَج هذه القيمة في جميع أنواع حزم DHCP.
* تبدأ اتصالات [HTTP/2](https://en.wikipedia.org/wiki/HTTP/2 "HTTP/2") بالسلسلة المكوّنة من 24 محرفًا `PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n`. وهي مصمَّمة لتفادي معالجة الإطارات من قِبل الخوادم والوسطاء الذين يدعمون إصدارات HTTP الأقدم دون الإصدار 2.0.
* يستخدم [مصافحة فتح WebSocket](https://en.wikipedia.org/wiki/WebSocket#Opening%5Fhandshake "WebSocket") سلسلةً تحتوي على [UUIDv4](https://en.wikipedia.org/wiki/UUIDv4 "UUIDv4") `258EAFA5-E914-47DA-95CA-C5AB0DC85B11`.

### في الواجهات

الأرقام السحرية شائعة في [دوال واجهات برمجة التطبيقات](https://en.wikipedia.org/wiki/API%5Ffunction "API function") و[الواجهات](https://en.wikipedia.org/wiki/Interface%5F%28computing%29 "Interface (computing)") عبر العديد من [أنظمة التشغيل](https://en.wikipedia.org/wiki/Operating%5Fsystem "Operating system")، بما في ذلك [دوس](https://en.wikipedia.org/wiki/DOS "DOS") و[ويندوز](https://en.wikipedia.org/wiki/Windows "Windows") و[نِت وير](https://en.wikipedia.org/wiki/NetWare "NetWare"):

أمثلة

* تستخدم [أنظمة BIOS](https://en.wikipedia.org/wiki/BIOS "BIOS") المتوافقة مع [IBM PC](https://en.wikipedia.org/wiki/IBM%5FPC "IBM PC") القيمتين السحريتين `00 00` و`12 34` لتقرير ما إذا كان على النظام أن يعدّ الذاكرة أم لا عند إعادة التشغيل، فيؤدي بذلك إقلاعًا باردًا أو دافئًا. وتستخدم مديرات الذاكرة [EMM386](https://en.wikipedia.org/wiki/EMM386 "EMM386") هاتين القيمتين أيضًا عند اعتراض طلبات الإقلاع. كما تستخدم أنظمة BIOS القيمة السحرية `55 AA` لتحديد ما إذا كان القرص قابلًا للإقلاع.
* تستخدم ذاكرة التخزين المؤقت للأقراص في [MS-DOS](https://en.wikipedia.org/wiki/MS-DOS "MS-DOS") المسمّاة [SMARTDRV](https://en.wikipedia.org/wiki/SMARTDRV "SMARTDRV") (واسمها الرمزي "Bambi") القيمتين السحريتين `BA BE` و`EB AB` في دوال واجهة برمجة التطبيقات.
* تستخدم العديد من مشغّلات [DR-DOS](https://en.wikipedia.org/wiki/DR-DOS "DR-DOS") و[Novell DOS](https://en.wikipedia.org/wiki/Novell%5FDOS "Novell DOS") و[OpenDOS](https://en.wikipedia.org/wiki/OpenDOS "OpenDOS") التي طُوِّرت في _مركز التطوير الأوروبي_ السابق في المملكة المتحدة القيمة `0E DC` كرمز سحري عند استدعاء أو توفير وظائف إضافية تعمل فوق دوال دوس القياسية (المُحاكاة)، وNWCACHE أحد الأمثلة على ذلك.

### استخدامات أخرى

أمثلة

* عنوان [MAC](https://en.wikipedia.org/wiki/MAC%5Faddress "MAC address") الافتراضي على شرائح [SOC](https://en.wikipedia.org/wiki/System%5Fon%5Fa%5Fchip "System on a chip") من تكساس إنسترومنتس هو `DE:AD:BE:EF:00:00`.

## GUID

من الممكن إنشاء أو تعديل [المُعرّفات الفريدة عالميًا](https://en.wikipedia.org/wiki/Globally%5Funique%5Fidentifier "Globally unique identifier") (GUIDs) لتكون سهلة التذكّر، لكن لا يُنصَح بذلك مطلقًا لأنه يضعف قوّتها كمُعرّفات شبه فريدة. فمواصفات توليد المُعرّفات GUID وUUID معقّدة للغاية، وهو ما يجعلها فريدة فعليًا إذا نُفِّذت تنفيذًا صحيحًا.

أحيانًا تنتهي أرقام مُعرّف المنتج في مايكروسوفت ويندوز لمنتجات [مايكروسوفت أوفيس](https://en.wikipedia.org/wiki/Microsoft%5FOffice "Microsoft Office") بـ`0000-0000-0000000FF1CE` ("OFFICE")، مثل `90160000-008C-0000-0000-0000000FF1CE`، وهو مُعرّف المنتج لـ"مكوّن قابلية التوسعة Office 16 Click-to-Run".

تستخدم جافا عدة مُعرّفات GUID تبدأ بـ`CAFEEFAC`.

في [جدول أقسام GUID](https://en.wikipedia.org/wiki/GUID%5FPartition%5FTable "GUID Partition Table") لمخطط التقسيم GPT، تستخدم [أقسام إقلاع BIOS](https://en.wikipedia.org/wiki/BIOS%5FBoot%5Fpartition "BIOS Boot partition") المُعرّف الخاص `21686148-6449-6E6F-744E-656564454649` الذي لا يتبع تعريف GUID؛ بل يتكوّن باستخدام رموز [آسكي](https://en.wikipedia.org/wiki/ASCII "ASCII") للسلسلة `Hah!IdontNeedEFI` جزئيًا بترتيب [صغير الطرفية](https://en.wikipedia.org/wiki/Little%5Fendian "Little endian").

## قيمة التنقيح

الـ**قيم السحرية للتنقيح** هي قيم محددة تُكتب إلى [الذاكرة](https://en.wikipedia.org/wiki/Random-access%5Fmemory "Random-access memory") أثناء [التخصيص](https://en.wikipedia.org/wiki/Memory%5Fallocation "Memory allocation") أو إلغاء التخصيص، بحيث يصبح من الممكن لاحقًا معرفة ما إذا كانت قد تلِفت أم لا، وجعل استخدام قيم مأخوذة من ذاكرة غير مهيأة أمرًا واضحًا. وعادةً ما يُنظر إلى الذاكرة بالنظام الست عشري، لذا تشيع القيم المتكررة سهلة التذكّر أو قيم [الهكسبيك](https://en.wikipedia.org/wiki/Hexspeak "Hexspeak"). وقد يُفضَّل اختيار قيم فردية عدديًا حتى تُخفِق المعالجات التي لا تملك عنونة بايتية عند محاولة استخدامها كمؤشّرات (التي يجب أن تقع عند عناوين زوجية). وينبغي اختيار قيم تبتعد عن العناوين المحتملة (شيفرة البرنامج، أو البيانات الساكنة، أو بيانات الكومة، أو المكدس). وبالمثل، قد تُختار بحيث لا تكون رموزًا صالحة في مجموعة تعليمات المعمارية المعنية.

وبما أنه من غير المرجّح للغاية، وإن كان ممكنًا، أن يأخذ عدد صحيح بحجم 32 بت هذه القيمة المحددة، فإن ظهور مثل هذا الرقم في [مُنقِّح](https://en.wikipedia.org/wiki/Debugger "Debugger") أو [تفريغ ذاكرة](https://en.wikipedia.org/wiki/Memory%5Fdump "Memory dump") يشير على الأرجح إلى خطأ مثل تجاوز سعة المخزن المؤقت أو [متغير غير مهيأ](https://en.wikipedia.org/wiki/Uninitialized%5Fvariable "Uninitialized variable").

تشمل الأمثلة المشهورة والشائعة ما يلي:

| الرمز            | الوصف                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 00008123         | يُستخدم في MS Visual C++. تُضبط المؤشّرات المحذوفة على هذه القيمة بحيث تُطلِق استثناءً عند استخدامها لاحقًا؛ وهي اسم بديل أكثر قابلية للتمييز للعنوان الصفري. ويُفعَّل عبر خيار دورة حياة التطوير الآمن (/sdl).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ..FACADE         | _"Facade"_، تستخدمه عدة [أنظمة تشغيل آنية](https://en.wikipedia.org/wiki/Real-time%5Foperating%5Fsystem "Real-time operating system").                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| 1BADB002         | _"1 bad boot"_، الرقم السحري لترويسة [Multiboot](https://en.wikipedia.org/wiki/Multiboot%5FSpecification "Multiboot Specification").                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| 8BADF00D         | _"Ate bad food"_، يشير إلى أن تطبيق [iOS](https://en.wikipedia.org/wiki/IOS "IOS") من [آبل](https://en.wikipedia.org/wiki/Apple%5FInc. "Apple Inc.") قد أُنهي بسبب انتهاء مهلة المراقِب (watchdog).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| A5A5A5A5         | يُستخدم في تطوير الأنظمة المضمَّنة لأن نمط البتات المتناوب (1010 0101) يُنتج نمطًا سهل التمييز على [راسمات الذبذبات](https://en.wikipedia.org/wiki/Oscilloscope "Oscilloscope") و[محلّلات المنطق](https://en.wikipedia.org/wiki/Logic%5Fanalyzer "Logic analyzer").                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| A5               | يُستخدم في دالة [malloc(3)](https://en.wikipedia.org/wiki/Malloc "Malloc") من نوع PHK في [FreeBSD](https://en.wikipedia.org/wiki/FreeBSD "FreeBSD") للتنقيح عندما يكون ‎/etc/malloc.conf مرتبطًا رمزيًا بـ"-J" لتهيئة كل ذاكرة مخصَّصة حديثًا، إذ إن هذه القيمة ليست مؤشّرًا صفريًا ولا محرف NUL في آسكي.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ABABABAB         | تستخدمه دالة HeapAlloc() التنقيحية من [مايكروسوفت](https://en.wikipedia.org/wiki/Microsoft "Microsoft") لتعليم [بايتات الحراسة](https://en.wikipedia.org/wiki/Guard%5Fbyte "Guard byte") في "الأرض الحرام" بعد ذاكرة الكومة المخصَّصة.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ABADBABE         | _"A bad babe"_، تستخدمه [آبل](https://en.wikipedia.org/wiki/Apple%5FInc. "Apple Inc.") كرقم سحري لـ"Boot Zero Block".                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ABBABABE         | _"[ABBA](https://en.wikipedia.org/wiki/ABBA "ABBA") babe"_، تستخدمه كومة ذاكرة لعبة _[Driver: Parallel Lines](https://en.wikipedia.org/wiki/Driver:%5FParallel%5FLines "Driver: Parallel Lines")_.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ABADCAFE         | _"A bad cafe"_، تُستخدم لتهيئة كل الذاكرة غير المخصَّصة (Mungwall، [AmigaOS](https://en.wikipedia.org/wiki/AmigaOS "AmigaOS")).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| B16B00B5         | _"Big Boobs"_، كانت [مايكروسوفت](https://en.wikipedia.org/wiki/Microsoft "Microsoft") تتطلّب سابقًا من ضيوف لينكس استخدامها في مُراقِب [Hyper-V](https://en.wikipedia.org/wiki/Hyper-V "Hyper-V") كالنصف الأعلى من "مُعرّف الضيف" الخاص بهم.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| BAADF00D         | _"Bad food"_، تستخدمه دالة HeapAlloc() التنقيحية من [مايكروسوفت](https://en.wikipedia.org/wiki/Microsoft "Microsoft") لتعليم ذاكرة الكومة المخصَّصة غير المهيأة.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| BAAAAAAD         | _"Baaaaaad"_، يشير إلى أن سجلّ [iOS](https://en.wikipedia.org/wiki/IOS "IOS") من [آبل](https://en.wikipedia.org/wiki/Apple%5FInc. "Apple Inc.") هو لقطة مكدس للنظام بأكمله، وليس تقرير تعطّل.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| BAD22222         | _"Bad too repeatedly"_، يشير إلى أن تطبيق صوت عبر الإنترنت (VoIP) على [iOS](https://en.wikipedia.org/wiki/IOS "IOS") من [آبل](https://en.wikipedia.org/wiki/Apple%5FInc. "Apple Inc.") قد أُنهي لأنه استُؤنف بتكرار مفرط.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| BADBADBADBAD     | _"Bad bad bad bad"_، ذاكرة "غير مهيأة" في [أنظمة بوروز الكبيرة](https://en.wikipedia.org/wiki/Burroughs%5FLarge%5FSystems "Burroughs Large Systems") (كلمات بطول 48 بت).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| BADC0FFEE0DDF00D | _"Bad coffee odd food"_، تُستخدم على أنظمة [RS/6000](https://en.wikipedia.org/wiki/RS/6000 "RS/6000") ذات 64 بت من [IBM](https://en.wikipedia.org/wiki/IBM "IBM") للإشارة إلى مسجّلات المعالج غير المهيأة.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| BADDCAFE         | _"Bad cafe"_، على نظام [سولاريس](https://en.wikipedia.org/wiki/Solaris%5F%28operating%5Fsystem%29 "Solaris (operating system)") من [صن مايكروسيستمز](https://en.wikipedia.org/wiki/Sun%5FMicrosystems "Sun Microsystems")، تُعلّم ذاكرة النواة غير المهيأة (KMEM\_UNINITIALIZED\_PATTERN).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| BBADBEEF         | _"Bad beef"_، تُستخدم في [WebKit](https://en.wikipedia.org/wiki/WebKit "WebKit") للأخطاء التي يتعذّر التعافي منها على وجه الخصوص.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| BEBEBEBE         | تستخدمه [AddressSanitizer](https://en.wikipedia.org/wiki/AddressSanitizer "AddressSanitizer") لملء الذاكرة المخصَّصة لكن غير المهيأة.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| BEEFCACE         | _"Beef cake"_، تستخدمه [مايكروسوفت .NET](https://en.wikipedia.org/wiki/Microsoft%5F.NET "Microsoft .NET") كرقم سحري في ملفات الموارد.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| C00010FF         | _"Cool off"_، يشير إلى أن نظام التشغيل أوقف تطبيق [iOS](https://en.wikipedia.org/wiki/IOS "IOS") من [آبل](https://en.wikipedia.org/wiki/Apple%5FInc. "Apple Inc.") استجابةً لحدث حراري.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| CAFEBABE         | _"Cafe babe"_، تستخدمه [جافا](https://en.wikipedia.org/wiki/Java%5F%28programming%5Flanguage%29 "Java (programming language)") لملفات الأصناف. تُستخدم في ثنائيات [Mach-O](https://en.wikipedia.org/wiki/Mach-O "Mach-O") متعددة المعماريات.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| CAFED00D         | _"Cafe dude"_، تستخدمه [جافا](https://en.wikipedia.org/wiki/Java%5F%28programming%5Flanguage%29 "Java (programming language)") لضغط [pack200](https://en.wikipedia.org/wiki/Pack200 "Pack200") الخاص بها.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| CAFEFEED         | _"Cafe feed"_، تستخدمه نواة التنقيح في نظام [سولاريس](https://en.wikipedia.org/wiki/Solaris%5F%28operating%5Fsystem%29 "Solaris (operating system)") من [صن مايكروسيستمز](https://en.wikipedia.org/wiki/Sun%5FMicrosystems "Sun Microsystems") لتعليم ذاكرة kmemfree().                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| CCCCCCCC         | تستخدمه مكتبة وقت تشغيل تنقيح C++ من [مايكروسوفت](https://en.wikipedia.org/wiki/Microsoft "Microsoft") والعديد من بيئات دوس لتعليم ذاكرة [المكدس](https://en.wikipedia.org/wiki/Stack-based%5Fmemory%5Fallocation "Stack-based memory allocation") غير المهيأة. والقيمة CC هي رمز عملية مقاطعة نقطة توقف التنقيح [INT 3](https://en.wikipedia.org/wiki/INT%5F3 "INT 3") على معالجات x86\.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| CDCDCDCD         | تستخدمه دالة malloc() التنقيحية لـ C/C++ من [مايكروسوفت](https://en.wikipedia.org/wiki/Microsoft "Microsoft") لتعليم ذاكرة الكومة غير المهيأة، التي تُعاد عادةً من HeapAlloc.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| 0D15EA5E         | _"Zero Disease"_، تُستخدم كرَاية للإشارة إلى الإقلاع العادي على جهازي [غيم كيوب](https://en.wikipedia.org/wiki/GameCube "GameCube") و[وي](https://en.wikipedia.org/wiki/Wii "Wii").                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| DDDDDDDD         | تستخدمه SmartHeap من MicroQuill ودالة free() التنقيحية لـ C/C++ من مايكروسوفت لتعليم ذاكرة الكومة المُحرَّرة.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| DEAD10CC         | _"Dead lock"_، يشير إلى أن تطبيق [iOS](https://en.wikipedia.org/wiki/IOS "IOS") من [آبل](https://en.wikipedia.org/wiki/Apple%5FInc. "Apple Inc.") قد أُنهي لأنه ظلّ ممسكًا بمورد من موارد النظام أثناء عمله في الخلفية.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| DEADBABE         | _"Dead babe"_، تُستخدم في بداية ملفات arena الخاصة بنظام [IRIX](https://en.wikipedia.org/wiki/IRIX "IRIX") من [سيليكون غرافيكس](https://en.wikipedia.org/wiki/Silicon%5FGraphics "Silicon Graphics").                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| DEADBEEF         | _"Dead beef"_، اشتهرت باستخدامها على أنظمة [IBM](https://en.wikipedia.org/wiki/IBM "IBM") مثل [RS/6000](https://en.wikipedia.org/wiki/RS/6000 "RS/6000")، كما تُستخدم في [أنظمة تشغيل](https://en.wikipedia.org/wiki/Operating%5Fsystem "Operating system") [ماك أو إس الكلاسيكي](https://en.wikipedia.org/wiki/Classic%5FMac%5FOS "Classic Mac OS")، و[OPENSTEP Enterprise](https://en.wikipedia.org/wiki/OPENSTEP%5FEnterprise "OPENSTEP Enterprise")، و[أميغا](https://en.wikipedia.org/wiki/Amiga "Amiga") من [كومودور](https://en.wikipedia.org/wiki/Commodore%5FInternational "Commodore International"). وعلى نظام [سولاريس](https://en.wikipedia.org/wiki/Solaris%5F%28operating%5Fsystem%29 "Solaris (operating system)") من [صن مايكروسيستمز](https://en.wikipedia.org/wiki/Sun%5FMicrosystems "Sun Microsystems")، تُعلّم ذاكرة النواة المُحرَّرة (KMEM\_FREE\_PATTERN).                                                                                       |
| DEADCAFE         | _"Dead cafe"_، تستخدمه [مايكروسوفت .NET](https://en.wikipedia.org/wiki/Microsoft%5F.NET "Microsoft .NET") كرقم خطأ في [مكتبات الربط الديناميكي (DLLs)](https://en.wikipedia.org/wiki/Dynamic-link%5Flibrary "Dynamic-link library").                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| DEADC0DE         | _"Dead code"_، تُستخدم كعلامة في البرنامج الثابت لـ[OpenWRT](https://en.wikipedia.org/wiki/OpenWRT "OpenWRT") للدلالة على بداية نظام ملفات jffs2 المراد إنشاؤه في نهاية البرنامج الثابت الساكن.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| DEADFA11         | _"Dead fail"_، يشير إلى أن المستخدم قد أغلق تطبيق [iOS](https://en.wikipedia.org/wiki/IOS "IOS") من [آبل](https://en.wikipedia.org/wiki/Apple%5FInc. "Apple Inc.") قسرًا.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| DEADF00D         | _"Dead food"_، تستخدمها Mungwall على [أميغا](https://en.wikipedia.org/wiki/Amiga "Amiga") من [كومودور](https://en.wikipedia.org/wiki/Commodore%5FInternational "Commodore International") لتعليم الذاكرة المخصَّصة لكن غير المهيأة.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| DEFEC8ED         | _"Defecated"_، تُستخدم في تفريغات ذاكرة [core](https://en.wikipedia.org/wiki/Core%5Fdump "Core dump") لنظام [OpenSolaris](https://en.wikipedia.org/wiki/OpenSolaris "OpenSolaris").                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| DEADDEAD         | _"Dead Dead"_ يشير إلى أن المستخدم بدأ عمدًا تفريغ تعطّل إما من مُنقِّح النواة أو من لوحة المفاتيح في مايكروسوفت ويندوز.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| D00D2BAD         | _"Dude, Too Bad"،_ تستخدمها تعطّلات Safari على macOS Big Sur.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| D00DF33D         | _"Dude feed"،_ تستخدمها [شجرة الأجهزة](https://en.wikipedia.org/wiki/Devicetree "Devicetree") لتعليم بداية الترويسات.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| EBEBEBEB         | من SmartHeap من MicroQuill.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| FADEDEAD         | _"Fade dead"_، تأتي في النهاية لتعريف كل سكربت [AppleScript](https://en.wikipedia.org/wiki/AppleScript "AppleScript").                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| FDFDFDFD         | تستخدمه دالة malloc() التنقيحية لـ C/C++ من [مايكروسوفت](https://en.wikipedia.org/wiki/Microsoft "Microsoft") لتعليم [بايتات الحراسة](https://en.wikipedia.org/wiki/Guard%5Fbyte "Guard byte") في "الأرض الحرام" قبل ذاكرة الكومة المخصَّصة وبعدها، وكذلك بعض دوال [C-Runtime](https://en.wikipedia.org/wiki/C%5Fstandard%5Flibrary "C standard library") الآمنة التنقيحية التي تنفّذها مايكروسوفت (مثل strncat\_s).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| FEE1DEAD         | _"Feel dead"_، يستخدمها استدعاء النظام reboot() في [لينكس](https://en.wikipedia.org/wiki/Linux "Linux").                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| FEEDFACE         | _"Feed face"_، تُشاهَد في ثنائيات [Mach-O](https://en.wikipedia.org/wiki/Mach-O "Mach-O") على منصة Mac OSX من [آبل](https://en.wikipedia.org/wiki/Apple%5FInc. "Apple Inc."). وعلى نظام [سولاريس](https://en.wikipedia.org/wiki/Solaris%5F%28operating%5Fsystem%29 "Solaris (operating system)") من [صن مايكروسيستمز](https://en.wikipedia.org/wiki/Sun%5FMicrosystems "Sun Microsystems")، تُعلّم المنطقة الحمراء (KMEM\_REDZONE\_PATTERN). تستخدمها [مشغّل VLC](https://en.wikipedia.org/wiki/VLC%5Fplayer "VLC player") وبعض [كاميرات IP](https://en.wikipedia.org/wiki/IP%5Fcamera "IP camera") في بروتوكول [RTP](https://en.wikipedia.org/wiki/Real-time%5FTransport%5FProtocol "Real-time Transport Protocol")/[RTCP](https://en.wikipedia.org/wiki/RTCP "RTCP")، حيث يرسل مشغّل VLC أربعة بايتات بترتيب [طرفية](https://en.wikipedia.org/wiki/Endianness "Endianness") النظام. وتتوقّع بعض كاميرات IP أن يرسل المشغّل هذا الرقم السحري ولا تبدأ البث إن لم تستلمه. |
| FEEEFEEE         | _"Fee fee"_، تستخدمه دالة HeapFree() التنقيحية من [مايكروسوفت](https://en.wikipedia.org/wiki/Microsoft "Microsoft") لتعليم ذاكرة الكومة المُحرَّرة. وقد تحمل بعض قيم مسك الدفاتر الداخلية القريبة الكلمة العليا مضبوطة على FEEE أيضًا.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |

معظم هذه القيم بطول 32 [بت](https://en.wikipedia.org/wiki/Bit "Bit") – وهو [حجم الكلمة](https://en.wikipedia.org/wiki/Word%5Fsize "Word size") في معظم الحواسيب ذات معمارية 32 بت.

إن شيوع هذه القيم في تقنيات مايكروسوفت ليس من قبيل الصدفة؛ فقد نوقشت بالتفصيل في كتاب [ستيف ماغواير](https://en.wikipedia.org/wiki/Steve%5FMaguire "Steve Maguire") _Writing Solid Code_ الصادر عن [مايكروسوفت بريس](https://en.wikipedia.org/wiki/Microsoft%5FPress "Microsoft Press"). وهو يقدّم مجموعة متنوعة من المعايير لهذه القيم، مثل:

* ينبغي ألا تكون مفيدة؛ أي أن يُتوقَّع من معظم الخوارزميات التي تعمل عليها أن تفعل شيئًا غير اعتيادي. والأرقام مثل الصفر لا تستوفي هذا المعيار.
* ينبغي أن يتعرّف المبرمج عليها بسهولة بوصفها قيمًا غير صالحة في المُنقِّح.
* على الأجهزة التي لا تملك [محاذاة بايتية](https://en.wikipedia.org/wiki/Byte%5Falignment "Byte alignment")، ينبغي أن تكون [أعدادًا فردية](https://en.wikipedia.org/wiki/Odd%5Fnumber "Odd number")، بحيث يؤدي اعتبارها عناوين والإحالة إليها إلى استثناء.
* ينبغي أن تسبّب استثناءً، أو ربما حتى توقّف المُنقِّح، إذا نُفِّذت كشيفرة.

وبما أنها كثيرًا ما استُخدمت لتعليم مناطق من الذاكرة كانت فارغة في جوهرها، فقد صار بعض هذه المصطلحات يُستخدم في عبارات تعني "ذهب، أُجهض، طُرد من الذاكرة"؛ مثل "برنامجك صار DEADBEEF".
