Arduino/integerconstants

من موسوعة حسوب
< Arduino
مراجعة 06:26، 24 أكتوبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (أنشأ الصفحة ب'الأعداد الصحيحة الثابتة هي أعداد استعملت مباشرةً في الشيفرة مثل 123. افتراضيًّا، تعامل هذه ال...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

الأعداد الصحيحة الثابتة هي أعداد استعملت مباشرةً في الشيفرة مثل 123. افتراضيًّا، تعامل هذه الأعداد على أنَّها أعداد صحيحة (integer) ولكن يمكن تحويلها إلى أنواع أخرى من الأعداد باستعمال أحد المبدلات (modifiers) مثل U أو L.

تعامل الأعداد الصحيحة على أنَّها أعدادٌ صحيحةٌ ذات الأساس 10 بشكل طبيعي دومًا (أي تمثَّل بالنظام العشري افتراضيًّا). مع ذلك، يمكن استعمال صيغ (أنظمة عد) أخرى لكتابة الأعداد، إذ سيختلف حينئذٍ أساس العدد.

الأساس مثال المنسِّق ملاحظات
10 (نظام عشري) 123 لا يوجد
2 (نظام ثنائي) B1111011 يُبدَأ العدد بالحرف B. يعمل مع القيم التي بحجم 8 بت فقط (0 إلى 255). يُستعمَل الرقمان 0 و 1 في هذا النظام فقط.
8 (نظام ثماني) 0173 يُبدَأ العدد بالرقم 0. الأرقام الصالحة مع هذا النظام هي من 0 إلى 7 فقط.
16 (نظام ست عشري) 0x7B يُبدَأ العدد بالرمز 0x. الأرقام والأحرف الصالحة مع هذا النظام هي من 0 إلى 9 ومن A إلى F (أو من a إلى f) فقط.

النظام العشري (الأساس 10)

هذا النظام هو نظام العد الشائع بين البشر الذي يستعملونه دومًا في عمليات الحساب. تُعدُّ الأعداد المكتوبة في الشيفرة والغير مسبوقة بأي منسِّق (بادئة) على أنَّها أعداد مكتوبة بالنظام العشري (أساسها 10).

n = 101;     // ((1 * 10^2) + (0 * 10^1) + 1)

النظام الثنائي (الأساس 2)

تمثَّل القيم في هذا النظام بالرقمين 0 و 1 فقط.

n = B101;    // ((1 * 2^2) + (0 * 2^1) + 1 * 2^0) == 5 في النظام العشري

الصيغة الثنائية صالحة للاستعمال مع القيم التي بحجم بايت (8 بت) فقط؛ أي بين 0 (B0) و 255 (B11111111). إن كنت تريد استعمال الصيغة الثنائية مع قيم بحجم أكبر -مثل استعمالها مع الأعداد الصحيحة (16 بت)-، فيمكنك القيام بذلك عبر تنفيذ عملية بسيطة من خطوتين بالشكل التالي:

myInt = (B11001100 * 256) + B10101010;    // هي البايت العلوي B11001100 القيمة

النظام الثماني (الأساس 8)

الأرقام المستعملة في تمثيل القيم في هذا النظام هي من 0 إلى 7. تبدأ القيم المراد كتابتها وتمثيلها بهذا النظام بالمنسِّق 0 (صفر).

n = 0101;    // ((1 * 8^2) + (0 * 8^1) + 1) == 65 في النظام العشري

يحتمل أن يحدث خطأ منطقي يصعب إيجاده في الشيفرة ناتجٌ عن بدء ثابتٍ بصفر بشكل غير مقصود؛ هذا الأمر يؤدي إلى تفسير المفسِّر لهذا الثابت على أنَّه قيمة ثمانية أثناء تصريف الشيفرة.

النظام الست عشري (الأساس 16)

الأرقام والمحارف المستعملة في تمثيل القيم في هذا النظام هي من 0 إلى 9 ومن A إلى F. في الحقيقة، القيمة العشرية للحرف A هي 10، والحرف B هي 11 وهكذا حتى الحرف F الذي قيمته 15. تبدأ القيم المراد تمثيلها وكتابتها في النظام الست عشري بالبادئة 0x. انتبه إلى أنَّه يمكن استعمال الحروف A-F بالحالة الكبيرة أو الصغيرة (a-f).

n = 0x101;   // ((1 * 16^2) + (0 * 16^1) + 1) == 257 في النظام العشري

ملاحظات وتحذيرات

المبدلان U و L

افتراضيًّا، يعامل العدد الصحيح الثابت على أنَّه من النوع «عدد صحيح» الذي يملك حجمًا محدودًا قد يكون غير كافٍ. لتغيير هذا النوع إلى نوع آخر من البيانات، يمكنك استعمال أحد المبدلات U أو L بالشكل التالي:

  • 'u' أو 'U': يُستعمَل هذا المبدل في نهاية الثابت العددي لتحويله إلى النوع «عديم الإشارة» (unsigned) مثل 33u.
  • 'l' أو 'L': يُستعمَل هذا المبدل في نهاية الثابت العددي لتحويله إلى النوع «عدد طويل» مثل 100000L.
  • 'ul' أو 'UL': يُستعمَل المبدلان معًا في نهاية الثابت العددي لتحويله إلى النوع «عدد طويل عديم الإشارة» مثل 32767ul.

انظر أيضًا

مصادر