كيفية استخدام الرموز الثنائية الأبجدية

StackOverflow https://stackoverflow.com/questions/4115548

  •  29-09-2019
  •  | 
  •  

سؤال

كنت أقرأ مقالًا عن الأرقام الثنائية وكان لديه بعض مشاكل الممارسة في النهاية ، لكنه لم يعطي الحلول للمشاكل. الأخير هو "كم عدد البتات المطلوبة لتمثيل الأبجدية؟". هل يمكن أن تخبرني إجابة هذا السؤال وشرح باختصار لماذا؟ شكرًا.

هل كانت مفيدة؟

المحلول

ستحتاج فقط إلى 5 بتات لأنك تحسب إلى 26 (إذا أخذنا أحرفًا علوية أو صغيرة فقط). 5 بتات ستحسب ما يصل إلى 31 ، لذلك لديك بالفعل مساحة أكبر مما تحتاج. لا يمكنك استخدام 4 لأن هذا يهم فقط إلى 15.

إذا كنت تريد كل من العلوي والصغرى ، فستكون 6 بتات إجابتك - ستعتبر 6 بتات بسعادة إلى 63 ، في حين أن الأبجدية المزدوجة لديك (2 * 24 = 48) ، مرة أخرى تاركًا الكثير من القسم.

نصائح أخرى

ذلك يعتمد على تعريفك الأبجدية. إذا كنت ترغب في تمثيل حرف واحد من الأبجدية الرومانية المكونة من 26 حرفًا (AZ) ، فأنت بحاجة إلى Log2 (26) = 4.7 بت. من الواضح ، في الممارسة العملية ، ستحتاج إلى 5 بت.

ومع ذلك ، بالنظر إلى دفق لا حصر له من الشخصيات ، يمكنك من الناحية النظرية التوصل إلى مخطط ترميز تقترب من 4.7 بت (لن يكون هناك رسم خرائط فردي بين الشخصيات الفردية ومتجهات البتات بعد الآن).

إذا كنت تتحدث عن تمثيل اللغة البشرية الفعلية ، فيمكنك الابتعاد برقم أقل بكثير من هذا (في منطقة 1.5 بت/شخصية) ، بسبب التكرار. ولكن هذا معقد للغاية للدخول في منشور واحد هنا ... (الكلمات الرئيسية Google هي "إنتروبيا" ، و "محتوى المعلومات").

هناك 26 حرفًا في الأبجدية ، لذا فأنت 2^5 = 32 هو الحد الأدنى لطول الكلمة من احتواء جميع الأحرف.

كيف يجب أن يكون التمثيل المباشر؟ إذا كنت بحاجة إلى 1: 1 بدون طبقة ترجمة ، فستفعل 5 بت. ولكن إذا كانت طبقة الترجمة خيارًا ، فيمكنك الابتعاد عن أقل. رمز مورس ، على سبيل المثال ، يمكنه القيام بذلك في 3 بت. قون

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top