العلاقة بين طول الكلمة وحجم الحرف وحجم العدد الصحيح والبايت

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

  •  22-08-2019
  •  | 
  •  

سؤال

ما هي العلاقة بين طول الكلمة وحجم الحرف وحجم العدد الصحيح والبايت في C++؟

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

المحلول

وهذا المعيار يتطلب أن أنواعا معينة لها <م> الحد الأدنى أحجام (باختصار هو لا يقل عن 16 بت، الباحث هو 16 بت على الأقل، الخ)، وأن بعض الجماعات من نوع تنظم (sizeof(int)> = sizeof(short) > = sizeof(char)).

نصائح أخرى

في C++، يجب أن يكون الحرف كبيرًا بما يكفي لاستيعاب أي حرف في مجموعة الأحرف الأساسية للتنفيذ.

int له "الحجم الطبيعي الذي تقترحه بنية بيئة التنفيذ".لاحظ أن هذا يعني أن int يفعل ذلك لا يجب أن يكون حجمها 32 بت على الأقل.التنفيذ حيث int 16 بت شائعة (فكر في MS-DOS المضمن).

ما يلي مأخوذ من أجزاء مختلفة من معايير C++ 98 وC99:

  • long int يجب أن يكون على الأقل بحجم int
  • int يجب أن يكون على الأقل بحجم short
  • short يجب أن يكون على الأقل بحجم char

لاحظ أنه يمكن أن تكون جميعها بنفس الحجم.

أيضًا (بافتراض التنفيذ المكمل لاثنين):

  • long int يجب أن يكون على الأقل 32 بت
  • int يجب أن يكون على الأقل 16 بت
  • short يجب أن يكون على الأقل 16 بت
  • char يجب أن يكون على الأقل 8 بت

وهذا المعيار لا يعرف هذا "كلمة" ثينغي تستخدم من قبل المعالجات. لكنه يقول نوع "الباحث" يجب أن يكون حجم الطبيعي للبيئة التنفيذ. ولكن حتى 64 البيئات بعض الشيء، وكثافة العمليات عادة ما يكون 32 بت فقط. حتى "كلمة" من حيث القياسية لديها الكثير جدا لا معنى مشترك (باستثناء اللغة الإنجليزية "كلمة" المشتركة طبعا).

وحجم الحرف هو حجم الحرف. يعتمد على ما الحرف الذي نتحدث عنه. أنواع الحرف وشار، تشار غير موقعة وشار وقعت. أيضا wchar_t يستخدم لتخزين الأحرف التي يمكن أن يكون لها أي حجم (يحدده تنفيذ - ولكن يجب استخدام أحد أنواع صحيح كنوع الكامنة مثل الكثير من التعدادات.)، في حين شار / شار وقعت أو الحرف غير الموقعة لا بد أن يكون بايت واحد. وهذا يعني أن بايت واحد لديه بت بقدر ما شار واحد لديه. إذا قال التنفيذ كائن واحد من نوع شار له 16 بت، ثم بايت على 16 بت أيضا.

والآن بايت هو الحجم الذي شار واحد يشغل. انها وحدة، وليس بعض نوع معين. ليس هناك أكثر من ذلك بكثير عن ذلك، أن مجرد أنها الوحدة التي يمكنك الوصول إلى الذاكرة. أي بمعنى لم يكن لديك وصول المؤشر إلى حقول قليلا، ولكن لديك حق الوصول إلى وحدات تبدأ من بايت واحد.

و"حجم عدد صحيح" الآن على نطاق واسع جدا. ماذا تقصد بذلك؟ كل من منطقي، شار، وباختصار، كثافة، طويلة ونظرائهم unsinged أعداد صحيحة. مداها هو ما يمكن أن أسميه "حجم صحيحا" كما تم توثيقه في مستوى C - الاستيلاء عليها من قبل ++ C القياسية. لوقعت شار مجموعة هو من -127 <-> 127، لفترة قصيرة، وكثافة العمليات هو نفسه وغير -2 ^ 15 + 1 <-> 2 ^ 15-1 ولفترة طويلة فمن -2 ^ 31 + 1 < -> 2 ^ 31-1. وتتراوح نظرائهم غير موقعة من 0 إلى 2 ^ 8-1، 2 ^ 16-1 و 2 ^ 32-1 على التوالي. تلك هي إلا الحد الأدنى من الأحجام. وهذا هو، عدد صحيح قد لا يكون أكبر حجم 2 ^ 14 على أي منصة، لأن ذلك هو أقل من 2 ^ 15-1 بطبيعة الحال. ويترتب عن تلك القيم التي لا بد من الحد الأدنى من البتات. لشار هو 8، قصيرة / كثافة العمليات التي هي 16 و لفترة طويلة وهذا هو 32. Two's-تكملة تمثيل للأرقام السالبة غير مطلوب، وهذا هو السبب في قيمة سالبة لا -128 بدلا من -127 على سبيل المثال لشار وقعت.

لايوجد

وستاندرد C ++ نوع بيانات تسمى word أو byte. يتم تعريف باقي كذلك نطاقات. القاعدة هي char التي لديها البتات CHAR_BITS. القيمة الأكثر شيوعا من CHAR_BITS هي 8.

وsizeof (شار) == 1 (بايت واحد) (في ج ++، C في - غير محددة)
sizeof (دولي)> = sizeof (شار)
كلمة - لا ج ++ نوع، غن في هندسة الكمبيوتر يعني 2 بايت

ونوع يعتمد على ما تعنيه العلاقة. حجم أنواع الرقمية عموما متعددة من حجم الكلمة الجهاز. بايت هو بايت بايت - 8 بت، لا أكثر ولا أقل. يتم تعريف حرف في معيار كما بايت غير موقعة واحد أعتقد (راجع ARM للحصول على التفاصيل).

والقاعدة العامة هي، لا تجعل أي افتراضات حول الحجم الفعلي للأنواع البيانات. يحدد المعيار والعلاقات بين أنواع مثل عدد صحيح "طويل" أن تكون إما نفس الحجم أو أكبر من مجرد "كثافة". سوف تطبيقات الفردية للغة اختيار أحجام محددة لأنواع التي هي مريحة بالنسبة لهم. على سبيل المثال، سوف مترجم لمعالج 64 بت اختيار أحجام مختلفة من مترجم لمعالج 32 بت.

ويمكنك استخدام عامل التشغيل sizeof () لفحص أحجام محددة للمترجم الذي تستخدمه (على بنية مستهدفة محددة).

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