المسارات
/
Emacs Lisp
Emacs Lisp
/
التمارين
/
الكمية متغيرة الطول
الكمية متغيرة الطول

الكمية متغيرة الطول

متوسط

التعليمات

نفّذ ترميز الكمية المتغيرة الطول وفك ترميزها.

هدف هذا التمرين هو تنفيذ ترميز VLQ وفك ترميزه.

باختصار، هدف هذا الترميز هو ترميز قيم صحيحة بطريقة توفّر البايتات. أول 7 بتات فقط من كل بايت هي ذات دلالة (محاذاة إلى اليمين؛ نوعًا ما مثل بايت ASCII). لذلك، إذا كانت لديك قيمة بطول 32 بت، فعليك تفكيكها إلى تسلسل من البايتات ذات 7 بتات. بالطبع، سيكون لديك عدد متغير من البايتات اعتمادًا على العدد الصحيح الذي لديك. لتحديد آخر بايت في التسلسل، تترك البت رقم 7 مساويًا للصفر. وفي كل البايتات السابقة، تضبط البت رقم 7.

إذن، إذا كان العدد الصحيح بين 0-127، فيمكن تمثيله ببايت واحد. على الرغم من أن VLQ يمكنه التعامل مع أعداد بأحجام اعتباطية، فإننا في هذا التمرين سنقتصر على الأعداد التي تتسع لها قيمة صحيحة بدون إشارة بطول 32 بت فقط. فيما يلي أمثلة على أعداد صحيحة كقيم بطول 32 بت، والكميات المتغيرة الطول التي تقابلها:

 NUMBER        VARIABLE QUANTITY
00000000              00
00000040              40
0000007F              7F
00000080             81 00
00002000             C0 00
00003FFF             FF 7F
00004000           81 80 00
00100000           C0 80 00
001FFFFF           FF FF 7F
00200000          81 80 80 00
08000000          C0 80 80 00
0FFFFFFF          FF FF FF 7F
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Emacs Lisp Exercism

مستعد لبدء الكمية متغيرة الطول؟

سجّل في Exercism لتتعلّم وتتقن Emacs Lisp عبر 96 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.