Skip to content

حاسبة القسمة الطويلة CRC / XOR / modulo 2

حاسبة القسمة الطويلة CRC / XOR / modulo 2

CRC / XOR calculator: enter message bits and generator poly for modulo-2 division.

Output: CRC remainder after XOR long division.

Output: CRC remainder after XOR long division.

حاسبة القسمة الطويلة CRC / XOR / modulo 2 تنفّذ القسمة الثنائية دون حمل أو استلاف، باستخدام XOR bitwise في كل خطوة. هذا حساب فحوص التكرار الدورية (CRC): تُلحق الرسالة بأصفار وتُقسم على كثير حدود مولّد، والباقي يصبح مجموع CRC. لأن الجمع والطرح modulo 2 كلاهما XOR، كل خطوة مقارنة بت بسيطة. أدخل كلمة بيانات ومولّداً (مقسوماً عليه) لترى كل محاذاة، كل XOR، والباقي النهائي المستخدم كـ CRC.

كيف تستخدم حاسبة CRC / XOR / modulo 2

لحساب CRC بقسمة modulo 2، اتبع هذه الخطوات الأربع:

  • أدخل الرسالة الثنائية (بتات البيانات) في الحقل الأول.
  • أدخل كثير الحدود المولّد كبتات ثنائية في الحقل الثاني.
  • تُلحق الحاسبة (n − 1) صفراً، حيث n طول المولّد.
  • انقر احسب للـ XOR عبر الرسالة واقرأ الباقي كـ CRC.

الناتج يُتجاهل عادة في عمل CRC — الباقي هو المجموع الاختباري الذي يُلحق بالرسالة قبل الإرسال.

CRC وحساب modulo 2

فحص التكرار الدوري يكتشف أخطاء الإرسال بمعاملة الرسالة ككثير حدود ثنائي كبير وقسمتها على كثير حدود مولّد متفق عليه. القسمة في modulo 2 (GF(2))، حيث الجمع والطرح متطابقان ويساويان XOR — لا حمل ولا استلاف. الباقي من هذه القسمة هو CRC. عندما يقسم المستقبل الرسالة + CRC على نفس المولّد، باقٍ 0 يعني عدم اكتشاف خطأ. هذه الحاسبة تعيد ذلك العمل bitwise بالضبط.

القسمة توزّع المجموع إلى مجموعات متساوية. تفعل القسمة الطويلة ذلك رقمًا رقمًا.

المقسوم عليه (32) — العدد الذي تقسم عليه. ضعه يسار القوس.

كيف تعمل قسمة CRC modulo 2

الحاسبة تحسب CRC عبر خمس إجراءات داخلية:

  • تُلحق (n − 1) صفراً للرسالة، حيث n عدد بتات المولّد.
  • تُحاذي المولّد تحت أيسر 1 bit في الباقي الحالي.
  • تُ XOR المولّد في تلك البتات (طرح modulo 2 بلا استلاف).
  • تنتقل إلى leading 1 التالي وتكرر محاذاة XOR.
  • تتوقف عندما تبقى بتات أقل من المولّد؛ تلك البتات هي CRC.

كل bit ناتج 1 حيث يُ XOR المولّد و0 في غير ذلك، لكن لـ CRC الباقي النهائي فقط يهم.

تُلحق (n − 1) صفراً للرسالة، حيث n عدد بتات المولّد.

صيغة قسمة CRC

حاسبة CRC / XOR / modulo 2 تحسب CRC = (M(x) · xⁿ⁻¹) mod G(x) في GF(2)، حيث M(x) الرسالة، G(x) المولّد من n بت، وكل الجمع XOR. الإطار المرسل M(x)·xⁿ⁻¹ + CRC، الذي G(x) يقسمه بالضبط. في الاستقبال، باقٍ 0 يؤكد السلامة.

110100111 = 1011 × 108902 + 189 → المتطابقة صحيحة

مسائل مثال CRC / XOR

هذه الأمثلة تعرض قسمة modulo 2 مع XOR في كل خطوة.

مثال 1 — رسالة 1101، مولّد 101

  1. طول المولّد 3، إذن ألحق 2 صفراً: 1101 تصبح 110100.
  2. XOR 101 في البتات الأولى بشكل متكرر: 110100 → 011100 → 001000 → 000010.
  3. آخر 2 بت، 10، هما باقي CRC.

مثال 2 — لماذا الطرح هو XOR

  1. في modulo 2، 1 + 1 = 0 و1 − 1 = 0، فالجمع والطرح نفس العملية.
  2. تلك العملية هي XOR bitwise، بلا حمل أو استلاف.
  3. إذن كل خطوة قسمة XOR واحدة للمولّد في البتات الحالية.

مثال 3 — تحقق المستقبل

  1. ألحق CRC للرسالة واقسم على نفس المولّد.
  2. XOR للأسفل كما قبل.
  3. باقٍ 0 يعني عدم اكتشاف خطأ.
طول المولّد 3، إذن ألحق 2 صفراً: 1101 تصبح 110100.
XOR 101 في البتات الأولى بشكل متكرر: 110100 → 011100 → 001000 → 000010.
آخر 2 بت، 10، هما باقي CRC.

مسائل CRC محلولة

كيف تحسب CRC لـ 10110 بمولّد 1011؟

ألحق 3 أصفار (طول المولّد 4) للحصول على 10110000، ثم XOR للأسفل. حاذِ 1011 تحت كل leading 1 وXOR: 10110000 → … → آخر 3 بتات تشكل باقي CRC. يُلحق الباقي بـ 10110 ليصبح الإطار الكامل قابلاً للقسمة على 1011 بلا باقٍ.

1101001111011

لماذا باقٍ 0 يعني أن البيانات سليمة؟

المرسل اختار CRC بحيث يكون الإطار المرسل مضاعفاً دقيقاً للمولّد. أي مضاعف لـ G(x) مقسوماً على G(x) يترك باقياً 0. إن قلبت بتات في الطريق، الإطار عادة لا يعود مضاعفاً، فيترك قسمة المستقبل باقياً غير صفري، مُعلّماً خطأ.

1010111

أخطاء شائعة في CRC / modulo 2

قسمة CRC modulo 2 تُنتج 5 أخطاء متكررة:

  • استخدام طرح ثنائي عادي مع استلاف بدلاً من XOR.
  • إلحاق عدد خاطئ من الأصفار (يجب أن يكون طول المولّد ناقص واحد).
  • محاذاة المولّد تحت 0 bit بدلاً من leading 1.
  • التعامل مع حمل كأنه موجود في GF(2).
  • الإبلاغ عن الناتج كـ CRC بدلاً من الباقي.

حاسبة CRC / XOR / modulo 2 تُ XOR في كل خطوة، تُلحق الأصفار الصحيحة، وتُرجع الباقي كمجموع اختباري.

استخدام طرح ثنائي عادي مع استلاف بدلاً من XOR.
إلحاق عدد خاطئ من الأصفار (يجب أن يكون طول المولّد ناقص واحد).
محاذاة المولّد تحت 0 bit بدلاً من leading 1.
التعامل مع حمل كأنه موجود في GF(2).
الإبلاغ عن الناتج كـ CRC بدلاً من الباقي.

الأسئلة الشائعة

ما قسمة modulo 2؟

ما قسمة modulo 2؟

قسمة ثنائية في GF(2)، حيث الجمع والطرح كلاهما XOR ولا حمل ولا استلاف. كل خطوة XOR للمولّد في البتات الحالية حيث leading bit 1.

كيف يُحسب CRC؟

ألحق (طول المولّد − 1) صفراً للرسالة، ثم اقسم على المولّد بقسمة طويلة modulo 2 (XOR). الباقي هو مجموع CRC.

لماذا XOR بدلاً من الطرح العادي؟

في modulo 2، 1 + 1 = 0 بلا حمل، فالجمع والطرح متطابقان ويساويان XOR. هذا يجعل كل خطوة XOR bitwise واحدة.

كم صفراً أُلحق للرسالة؟

أقل بواحد من عدد بتات المولّد. مولّد 4 بتات يعني 3 أصفار ملحقة، تحجز مكان باقي CRC.

كيف يتحقق المستقبل من CRC؟

يقسم المستقبل الرسالة + CRC على نفس المولّد بقسمة modulo 2. باقٍ 0 يعني عدم اكتشاف خطأ؛ غير صفري يشير إلى تلف.

هل الناتج مهم في CRC؟

لا. لـ CRC يُستخدم الباقي فقط كمجموع اختباري. الناتج يُتجاهل عادة.

ما كثير الحدود المولّد؟

المقسوم عليه الثنائي المتفق عليه، مكتوباً ككثير حدود مثل x³ + x + 1 (1011). يجب على المرسل والمستقبل استخدام نفس المولّد.

هوية CRC

حاسبة CRC / XOR / modulo 2 تستخدم CRC = (M(x)·xⁿ⁻¹) mod G(x) في GF(2)، فالإطار المرسل M(x)·xⁿ⁻¹ + CRC قابل للقسمة بالضبط على G(x). لأن مضاعف المولّد يترك باقياً 0، قسمة modulo 2 للمستقبل تُرجع 0 عندما تكون البيانات سليمة.