الأعداد الصحيحة (علوم الحاسوب)

في علم الحاسوب ، يُعرَّف العدد الصحيح بأنه بيانات من نوع البيانات التكاملية ، وهو نوع بيانات يُمثِّل نطاقًا من الأعداد الصحيحة الرياضية . [ 1 ] قد تختلف أحجام أنواع البيانات التكاملية، وقد يُسمح أو لا يُسمح لها باحتوائها على قيم سالبة. تُمثَّل الأعداد الصحيحة عادةً في الحاسوب كمجموعة من الأرقام الثنائية (بتات). يختلف حجم هذه المجموعة، وبالتالي تختلف مجموعة أحجام الأعداد الصحيحة المتاحة بين أنواع الحواسيب المختلفة. توفر مكونات الحاسوب المادية دائمًا تقريبًا طريقة لتمثيل سجل المعالج أو عنوان الذاكرة كعدد صحيح.

القيمة والتمثيل

قيمة العنصر ذي النوع الصحيح هي العدد الصحيح الرياضي الذي يُقابله. قد تكون الأنواع الصحيحة غير مُوقّعة (قادرة على تمثيل الأعداد الصحيحة غير السالبة فقط) أو مُوقّعة (قادرة على تمثيل الأعداد الصحيحة السالبة أيضًا). [ 2 ]

تُحدد القيمة العددية عادةً في شفرة المصدر للبرنامج كسلسلة من الأرقام، ويُمكن إضافة علامة + أو - قبلها. تسمح بعض لغات البرمجة باستخدام رموز أخرى، مثل النظام الست عشري (الأساس 16) أو النظام الثماني (الأساس 8). كما تسمح بعض لغات البرمجة باستخدام فواصل مجموعات الأرقام . [ 3 ]

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

التمثيل الأكثر شيوعًا للأعداد الصحيحة الموجبة هو سلسلة من البتات ، باستخدام النظام العددي الثنائي . يختلف ترتيب بايتات الذاكرة التي تخزن البتات؛ انظر ترتيب البايتات . يُعرف عرض أو دقة أو عدد البتات [ 4 ] لنوع البيانات الصحيح بعدد البتات في تمثيله. يمكن لنوع بيانات صحيح مكون من n بت أن يرمز إلى 2 ^n عددًا؛ على سبيل المثال، يمثل النوع غير المُوَقَّع عادةً القيم غير السالبة من 0 إلى 2 ^n - 1. تُستخدم أحيانًا ترميزات أخرى لقيم الأعداد الصحيحة إلى أنماط بتات، مثل الترميز العشري الثنائي أو ترميز غراي ، أو كرموز أحرف مطبوعة مثل ASCII .

توجد أربع طرق معروفة لتمثيل الأعداد الموقعة في نظام الحوسبة الثنائية. الطريقة الأكثر شيوعًا هي المتمم الثنائي ، الذي يسمح لنوع عدد صحيح موقع مكون من n بت بتمثيل الأعداد من -2 ( n -1) إلى 2 ( n -1) -1 . تُعدّ حسابات المتمم الثنائي ملائمة لوجود تطابق تام بين التمثيلات والقيم (على وجه الخصوص، لا يوجد صفر موجب وصفر سالب منفصلان )، ولأن عمليات الجمع والطرح والضرب لا تتطلب التمييز بين الأعداد الموقعة وغير الموقعة. تشمل الاحتمالات الأخرى: النظام الثنائي المُزاح ، ونظام الإشارة والمقدار ، والمتمم الأحادي .

تُعرّف بعض لغات البرمجة أحجام الأعداد الصحيحة بطريقة مستقلة عن الجهاز، بينما تختلف تعريفات أخرى تبعًا لحجم كلمة المعالج. لا تُعرّف جميع تطبيقات اللغات متغيرات بجميع أحجام الأعداد الصحيحة، وقد لا تكون الأحجام المُعرّفة متميزة حتى في تطبيق مُحدد. قد يكون للعدد الصحيح في لغة برمجة ما حجم مختلف في لغة أخرى، أو على معالج مختلف، أو في سياق تنفيذ ذي بنية بتية مختلفة؛ انظر §  الكلمات .

استخدمت بعض بنى الحواسيب القديمة تمثيلات عشرية للأعداد الصحيحة، مخزنة بنظام الترميز العشري الثنائي (BCD) أو بتنسيق آخر. تتطلب هذه القيم عمومًا أحجام بيانات تبلغ 4 بتات لكل رقم عشري (يُسمى أحيانًا نصف بايت )، وعادةً ما تكون هناك بتات إضافية للإشارة. توفر العديد من وحدات المعالجة المركزية الحديثة دعمًا محدودًا للأعداد الصحيحة العشرية كنوع بيانات موسع، حيث توفر تعليمات لتحويل هذه القيم من وإلى القيم الثنائية. اعتمادًا على البنية، قد تكون للأعداد الصحيحة العشرية أحجام ثابتة (على سبيل المثال، 7 أرقام عشرية بالإضافة إلى الإشارة تتسع في كلمة 32 بت)، أو قد تكون ذات طول متغير (حتى حجم رقم أقصى معين)، وعادةً ما تشغل رقمين لكل بايت (ثمانية بتات).

أنواع البيانات التكاملية الشائعة

أجزاءاسمالمدى (بافتراض استخدام المتمم الثنائي للأعداد الموقعة )الأرقام العشريةالاستخداماتالتطبيقات
لغة C / لغة C++سي شاربباسكال ودلفيجافاSQL [ أ ]فورتراندالصدأ
4قضم ، نصف ثمانيةالتوقيع: من -8 إلى 7، ومن -(2 3 ) إلى 2 3 − 10.9تمثيلعشري مشفر ثنائياً ، تمثيل رقم عشري واحد
بدون إشارة: من 0 إلى 15، وهو ما يساوي 2 4 − 11.2
8بايت ، ثمانية بتات ، i8، u8التوقيع: من -128 إلى 127، ومن -(2 7 ) إلى 2 7 − 12.11أحرف ASCII ، وحدات ترميز في ترميز الأحرف UTF-8int8_t، signed char[ ب ]sbyte،System.SByteShortintbyte،java.lang.BytetinyintINTEGER[ ج ]bytei8
بدون إشارة: من 0 إلى 255، وهو ما يساوي 2 ^8 - 12.41uint8_t، unsigned char[ ب ]byte،System.ByteByteغير متوفرunsigned tinyintغير متوفرubyteu8
16نصف كلمة، كلمة ، قصيرة، i16، u16التوقيع: من -32,768 إلى 32,767، ومن -(2 15 ) إلى 2 15 − 14.52أحرف UCS-2 ، وحدات ترميز في ترميز الأحرف UTF-16int16_t، short، [ ب ] int[ ب ]short،System.Int16Smallintshort،java.lang.ShortsmallintINTEGER[ ج ]shorti16
بدون إشارة: من 0 إلى 65535، وهو ما يساوي 2 ^16 - 14.82uint16_t، unsigned، [ ب ] unsigned int[ ب ]ushort،System.UInt16Wordchar[ د ] ،java.lang.Characterunsigned smallintغير متوفرushortu16
32كلمة، كلمة طويلة ، كلمة مزدوجة، كلمة طويلة، عدد صحيح، i32، u32التوقيع: من -2,147,483,648 إلى 2,147,483,647 ، ومن -(2 31 ) إلى 2 31 − 19.33أحرف UTF-32 ، ألوان حقيقية مع قناة ألفا، FourCC ، مؤشرات في الحوسبة 32 بتint32_t، int، [ ب ] long[ ب ]int،System.Int32LongInt; Integer[ هـ ]int،java.lang.IntegerintINTEGER[ ج ]inti32
بدون إشارة: من 0 إلى 4,294,967,295، وهو ما يساوي 2 ^32 - 19.63uint32_t، unsigned، [ ب ]unsigned int ، [ ب ] unsigned long[ ب ]uint،System.UInt32LongWord; DWord; Cardinal[ هـ ]غير متوفرunsigned intغير متوفرuintu32
64كلمة، كلمة مزدوجة، كلمة طويلة، طويل، طويل طويل، رباعي، كلمة رباعية، كلمة رباعية، عدد صحيح 64 بت، عدد صحيح 64 بت، عدد صحيح 64 بتالتوقيع: من −(2 63 ) إلى 2 63 − 118.96الوقت (مثلاً بالمللي ثانيةمنذ بداية حقبة يونكس) ، والمؤشرات في الحوسبة ذات 64 بتint64_t، long، [ ب ] long long[ ب ]long،System.Int64Int64long،java.lang.LongbigintINTEGER[ ج ]longi64
بدون إشارة: من 0 إلى 2 64 − 119.27uint64_t، unsigned long long[ ب ]ulong،System.UInt64UInt64؛QWordغير متوفرunsigned bigintغير متوفرulongu64
128كلمة ثمانية، كلمة رباعية مزدوجة، i128، u128التوقيع: من −(2 127 ) إلى 2 127 − 138.23حسابات علمية معقدة،

عناوين IPv6 ، ومعرفات GUID

متوفر فقط كإضافات غير قياسية أو خاصة بالمترجمcent[ f ]i128
بدون إشارة: من 0 إلى 2 128 − 138.53ucent[ f ]u128
نعدد صحيح مكون من n بت (الحالة العامة)التوقيع: −(2 n −1 ) إلى ( 2 n −1 − 1 )( ن - 1 ) لوغاريتم 10  2C23: _BitInt(n)،signed _BitInt(n)آدا :range-2**(n-1)..2**(n-1)-1
غير مُوقّع: من 0 إلى ( 2n - 1 )n log 10  2C23:unsigned _BitInt(n)Ada: , ; المكتبات القياسية أو مكتبات الحساب العشوائي التابعة لجهات خارجية أو الفئات في العديد من اللغات مثل Python و C++ وما إلى ذلك.range0..2**n-1mod2**nBigDecimalDecimal

تدعم وحدات المعالجة المركزية المختلفة أنواعًا مختلفة من البيانات الصحيحة. عادةً، تدعم الأجهزة كلا النوعين، الموقّع وغير الموقّع، ولكن ضمن نطاق محدود وثابت من العرض.

يُبيّن الجدول أعلاه عرض أنواع البيانات الصحيحة التي تدعمها المعالجات الشائعة في الأجهزة. توفر لغات البرمجة عالية المستوى إمكانيات أوسع. من الشائع وجود نوع بيانات صحيح "مزدوج العرض" يحتوي على ضعف عدد البتات مقارنةً بأكبر نوع بيانات مدعوم من قِبل الجهاز. كما تحتوي العديد من اللغات على أنواع حقول بت (عدد بتات محدد، عادةً ما يكون أقل من الحد الأقصى لعرض البيانات المدعوم من قِبل الجهاز) وأنواع نطاقات (التي لا يمكنها تمثيل سوى الأعداد الصحيحة ضمن نطاق محدد).

تدعم بعض لغات البرمجة، مثل Lisp و Smalltalk و REXX و Haskell و Python و Raku ، الأعداد الصحيحة ذات الدقة العشوائية (المعروفة أيضًا بالأعداد الصحيحة ذات الدقة اللانهائية أو الأعداد الكبيرة ). أما اللغات الأخرى التي لا تدعم هذا المفهوم كبنية أساسية، فقد تحتوي على مكتبات متاحة لتمثيل الأعداد الكبيرة جدًا باستخدام مصفوفات من متغيرات أصغر، مثل java.math.BigIntegerفئة Java أو حزمة Perl .bigint [ 7 ] تستخدم هذه المكتبات القدر اللازم من ذاكرة الحاسوب لتخزين الأعداد؛ ومع ذلك، فإن سعة تخزين الحاسوب محدودة، لذا فهي أيضًا لا تستطيع تمثيل سوى مجموعة فرعية محدودة من الأعداد الصحيحة الرياضية. تدعم هذه المخططات أعدادًا كبيرة جدًا؛ فعلى سبيل المثال، يمكن استخدام كيلوبايت واحد من الذاكرة لتخزين أعداد يصل طولها إلى 2466 رقمًا عشريًا.

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

تُعرف الكمية المكونة من أربعة بتات باسم "نيبل" (عند تناول الطعام، لأنها أصغر من اللقمة ) أو "نيبل" (تورية على شكل كلمة بايت ). يتوافق النيبل الواحد مع رقم واحد في النظام الست عشري، ويحتوي على رقم واحد أو رمز إشارة في النظام العشري المشفر ثنائياً.

البايتات والأوكتات

كان مصطلح "بايت " في الأصل يعني "أصغر وحدة ذاكرة قابلة للعنونة". في الماضي، استُخدمت بايتات مكونة من 5 و6 و7 و8 و9 بتات. كما وُجدت حواسيب قادرة على عنونة البتات الفردية ("آلة ذات عنونة بتية")، أو حواسيب قادرة على عنونة كميات مكونة من 16 أو 32 بتًا فقط ("آلة ذات عنونة كلمة"). لم يُستخدم مصطلح " بايت " عادةً مع الآلات ذات العنونة البتية أو الكلمة.

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

في الاستخدام الحديث ، تعني كلمة بايت دائمًا تقريبًا ثمانية بتات، نظرًا لأن جميع الأحجام الأخرى قد أصبحت غير مستخدمة؛ وبالتالي أصبحت كلمة بايت مرادفة لكلمة ثمانية بتات .

كلمات

يُستخدم مصطلح "الكلمة" للإشارة إلى مجموعة صغيرة من البتات التي تُعالج في آنٍ واحد بواسطة معالجات ذات بنية معينة . وبالتالي، فإن حجم الكلمة خاص بوحدة المعالجة المركزية. وقد استُخدمت أحجام كلمات مختلفة، منها 6، 8، 12، 16، 18، 24، 32، 36، 39، 40، 48، 60، و64 بت. ولأن حجم الكلمة مرتبط بالبنية، فعادةً ما تُحدده أول وحدة معالجة مركزية في عائلة معينة، وليس خصائص وحدة معالجة مركزية لاحقة متوافقة. كما تختلف معاني المصطلحات المشتقة من كلمة "كلمة" ، مثل "الكلمة الطويلة " و "الكلمة المزدوجة" و "الكلمة الرباعية" و "الكلمة النصفية" ، باختلاف وحدة المعالجة المركزية ونظام التشغيل. [ 8 ]

تستطيع جميع معالجات سطح المكتب الحديثة تقريبًا استخدام كلمات 64 بت، على الرغم من أن المعالجات المدمجة ذات حجم الكلمات 8 و16 بت لا تزال شائعة. وكان طول الكلمة 36 بت شائعًا في بدايات الحوسبة.

أحد الأسباب الرئيسية لعدم قابلية نقل البرامج هو الافتراض الخاطئ بأن جميع أجهزة الكمبيوتر لها نفس حجم الكلمة. على سبيل المثال، إذا قام مبرمج يستخدم لغة C بتعريف intمتغير بشكل خاطئ لتخزين قيم أكبر من 2 ^15 - 1، فسيفشل البرنامج على أجهزة الكمبيوتر ذات الأعداد الصحيحة 16 بت. كان ينبغي تعريف هذا المتغير على أنه long، والذي يحتوي على 32 بت على الأقل على أي جهاز كمبيوتر. قد يفترض المبرمجون أيضًا بشكل خاطئ أنه يمكن تحويل المؤشر إلى عدد صحيح دون فقدان أي معلومات، وهو ما قد ينجح على بعض أجهزة الكمبيوتر 32 بت، ولكنه يفشل على أجهزة الكمبيوتر 64 بت ذات المؤشرات 64 بت والأعداد الصحيحة 32 بت. تم حل هذه المشكلة في C99 في الملف stdint.hintptr_t .

قد تشير بنية البرنامج ( bitness ) إلى حجم الكلمة (أو بنية) المعالج الذي يُشغَّل عليه، أو إلى عرض عنوان الذاكرة أو المؤشر، والذي قد يختلف بين أوضاع التنفيذ أو السياقات. على سبيل المثال، تدعم إصدارات 64 بت من مايكروسوفت ويندوز الملفات الثنائية 32 بت الموجودة، وتعمل البرامج المُجمَّعة لنظام لينكس x32 ABI في وضع 64 بت، ومع ذلك تستخدم عناوين ذاكرة 32 بت. [ 9 ]

عدد صحيح قياسي

يعتمد حجم العدد الصحيح القياسي على النظام الأساسي.

في لغة C ، يُرمز لها بـ intويجب أن تكون 16 بت على الأقل. أنظمة ويندوز ويونكس لديها 32 بت intعلى كل من معمارية 32 بت و64 بت.

عدد صحيح قصير

يمكن للعدد الصحيح القصير أن يمثل عددًا صحيحًا قد يشغل مساحة تخزين أقل، مع نطاق أصغر، مقارنة بالعدد الصحيح القياسي على نفس الجهاز.

في لغة C ، يُرمز له بـ short. يُشترط أن يكون طوله 16 بت على الأقل، وغالبًا ما يكون أصغر من عدد صحيح قياسي، ولكن هذا ليس شرطًا. [ 10 ] [ 11 ] يمكن للبرنامج المتوافق أن يفترض أنه يستطيع تخزين القيم بأمان بين −(2^ 15 − 1) [ 12 ] و 2 ^15 − 1 ، [ 13 ] ولكن لا يجوز له افتراض أن النطاق ليس أكبر من ذلك. في لغة Java ، shortيكون a دائمًا عددًا صحيحًا من 16 بت. في واجهة برمجة تطبيقات WindowsSHORT ، يُعرَّف نوع البيانات على أنه عدد صحيح مُوَقَّع من 16 بت على جميع الأجهزة. [ 8 ]

أحجام الأعداد الصحيحة القصيرة الشائعة
لغة البرمجةاسم نوع البياناتالإشارةالحجم بالبايتالحد الأدنى للقيمةالقيمة القصوى
لغة C ولغة C++shortموقّع2-32,767 [ غرام ]+32,767
unsigned shortغير موقع2065,535
سي شاربshortموقّع2-32,768+32,767
ushortغير موقع2065,535
جافاshortموقّع2-32,768+32,767
SQLsmallintموقّع2-32,768+32,767

عدد صحيح طويل

يمكن أن يمثل العدد الصحيح الطويل عددًا صحيحًا يكون نطاقه أكبر من أو يساوي نطاق العدد الصحيح القياسي على نفس الجهاز.

في لغة C ، يُرمز له بـ long. يجب أن يكون حجمه 32 بت على الأقل، وقد يكون أكبر من عدد صحيح قياسي أو أصغر منه. يمكن للبرنامج المتوافق أن يفترض أنه يستطيع تخزين القيم بأمان بين −(2 31 − 1) [ 12 ] و 2 31 − 1 ، [ 13 لكن لا يجوز له افتراض أن النطاق ليس أكبر من ذلك.

أحجام الأعداد الصحيحة الطويلة الشائعة
لغة البرمجةنوع الموافقةالمنصاتاسم نوع البياناتالتخزين بالبايتمجموعة موقعةنطاق غير موقع
C ISO/ANSI C99معيار دولييونكس (أنظمة 16/32 بت)؛ [ 8 ] ويندوز (أنظمة 16/32/64 بت) [ 8 ]long4 (الحد الأدنى المطلوب 4 )−(2 31 − 1) إلى (2 31 − 1)من 0 إلى (2 32 − 1) (الحد الأدنى المطلوب )
C ISO/ANSI C99معيار دولييونكس (أنظمة 64 بت) [ 8 ] [ 11 ]long8 (الحد الأدنى المطلوب 4 )−(2 63 − 1) إلى (2 63 − 1)من 0 إلى (2 64 − 1)
لغة C++ ISO/ANSIمعيار دولييونكس ، ويندوز (نظام 16/32 بت)long4 [ 14 ] (الحد الأدنى المطلوب 4 )−(2 31 ) إلى (2 31 − 1)من 0 إلى (2 32 − 1) (الحد الأدنى المطلوب )
C++/CLIالمعيار الدولي ECMA-372يونكس ، ويندوز (أنظمة 16/32 بت)long4 [ 15 ] (الحد الأدنى المطلوب 4 )−(2 31 ) إلى (2 31 − 1)من 0 إلى (2 32 − 1) (الحد الأدنى المطلوب )
VBمعايير الشركةويندوزLong4 [ 16 ]−(2 31 ) إلى (2 31 − 1)غير متوفر
VBAمعايير الشركةويندوز ، ماك أو إس إكسLong4 [ 17 ]−(2 31 ) إلى (2 31 − 1)غير متوفر
خادم SQLمعايير الشركةويندوزBigInt8−(2 63 ) إلى (2 63 − 1)من 0 إلى 264
سي شارب / في بي.نتمعيار ECMA الدوليمايكروسوفت دوت نتlongأوInt648−(2 63 ) إلى (2 63 − 1)من 0 إلى (2 64 − 1)
جافاالمعيار الدولي/معيار الشركةمنصة جافاlong8−(2 63 ) إلى (2 63 − 1)غير متوفر
باسكال؟ويندوز ، يونكسint648−(2 63 ) إلى (2 63 − 1)من 0 إلى 264 (نوع Qword)

لونغ دي

في إصدار C99 من لغة البرمجة C وإصدار C++11 من لغة C++ ، long longيُدعم نوع بيانات بسعة مضاعفة للحد الأدنى القياسي long. هذا النوع غير مدعوم من قِبل المترجمات التي تتطلب توافق كود C مع معيار C++ السابق، C++03، لأن نوع البيانات long long لم يكن موجودًا في C++03. بالنسبة للمترجمات المتوافقة مع معيار ANSI/ISO، يجب استيفاء الحد الأدنى من المتطلبات للنطاقات المحددة، أي من −(2 63 − 1) [ 12 ] إلى 2 63 − 1 للأعداد الموقعة، ومن 0 إلى 2 64 − 1 للأعداد غير الموقعة [ 13 ] ؛ ومع ذلك، يُسمح بتوسيع هذا النطاق. [ 18 ] [ 19 ] قد يُشكل هذا مشكلة عند تبادل الكود والبيانات بين المنصات، أو عند الوصول المباشر إلى الأجهزة. لذلك، توجد عدة مجموعات من ملفات الرأس التي توفر أنواع بيانات ذات عرض دقيق مستقلة عن المنصة. توفر مكتبة C القياسية <stdint.h> ؛ تم تقديم هذا في C99 و C++11.

بناء الجملة

يمكن كتابة الأعداد الصحيحة كأرقام عربية عادية ، تتكون من سلسلة من الأرقام، ويُشار إلى النفي بعلامة ناقص قبل القيمة. مع ذلك، تمنع معظم لغات البرمجة استخدام الفواصل أو المسافات لتجميع الأرقام . من أمثلة الأعداد الصحيحة:

  • 42
  • 10000
  • -233000

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

  • تستخدم العديد من لغات البرمجة، وخاصة تلك المتأثرة بلغة C ، بادئة `-1` 0Xأو 0x`-2` لتمثيل قيمة سداسية عشرية ، على سبيل المثال `-3` 0xDEADBEEF. وقد تستخدم لغات أخرى ترميزًا مختلفًا، فمثلاً، تضيف بعض لغات التجميعH `-1` أو h`-2` إلى نهاية القيمة السداسية العشرية.
  • تسمح لغات البرمجة Perl و Ruby و Java و Julia و D و Go و C# و Rust و Python (ابتداءً من الإصدار 3.6) و PHP (ابتداءً من الإصدار 7.4.0 [ 20 ] ) باستخدام الشرطات السفلية المضمنة لتحسين الوضوح، على سبيل المثال ، وتتجاهل لغة Fortran10_000_000 ذات الصيغة الثابتة المسافات المضمنة في القيم العددية. أما لغتا C (ابتداءً من C23 ) وC++ فتستخدمان علامات اقتباس مفردة لهذا الغرض.
  • في لغتي C و C++ ، يشير الصفر البادئ إلى قيمة ثمانية ، مثلاً 0.5 0755. كان الهدف الأساسي من ذلك هو استخدامه مع أنظمة يونكس ؛ إلا أنه وُجهت إليه انتقادات لأن الأعداد الصحيحة العادية قد تبدأ أيضاً بصفر. [ 21 ] ولذلك، تستخدم لغات بايثون ، وروبي ، وهاسكل ، و OCaml0O البادئة 0 أو 0 للقيم الثمانية 0o، وفقاً للتنسيق المستخدم في القيم الست عشرية.
  • يمكن للعديد من اللغات، بما في ذلك Java و C# و Scala و Python و Ruby و OCaml و C (بدءًا من C23) و C++، تمثيل القيم الثنائية عن طريق إضافة بادئة 0Bأو 0b.

القيم المتطرفة

في العديد من لغات البرمجة، توجد ثوابت محددة مسبقًا تمثل أصغر وأكبر القيم التي يمكن تمثيلها بنوع عدد صحيح معين.

تشمل أسماء هذه الأشياء

انظر أيضاً

ملحوظات

  1. لا تحتوي جميع لهجات لغة SQL على أنواع بيانات غير موقعة. [ 5 ] [ 6 ]
  2. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 تعتمد أحجام char و short و int و long و long long في لغة C/C++ على تنفيذ اللغة.
  3. تستخدم لغة فورتران "الأنواع" للتحكم في حجم الأعداد الصحيحة. تتوفر الثوابت المُعَلمة التي تُحدد الأنواع المتاحة في الوحدة النمطية الداخلية iso_fortran_env. أما الثوابت التي تُحدد الأنواع المتوافقة مع لغة C فتتوفر في الوحدة النمطية الداخلية iso_c_binding .
  4. لا تدعم لغة جافا العمليات الحسابية على أنواع البيانات من نوع char بشكل مباشر . يجب تحويل النتائجمن نوع int إلى نوع char .
  5. 1 2 لا يتم ضمانأحجام الأعداد الصحيحة والأعداد الأصلية في دلفي، حيث تختلف من منصة إلى أخرى؛ وعادة ما يتم تعريفها على أنها LongInt و LongWord على التوالي.
  6. 1 2 محجوز للاستخدام المستقبلي. لم يتم تنفيذه بعد.
  7. يسمح معيار ISO C للتطبيقات بحجز القيمة مع بت الإشارة 1 وجميع البتات الأخرى 0 (لتمثيل الإشارة والمقدار والمتمم الثنائي) أو مع جميع البتات 1 (للمتمم الأحادي) لاستخدامها كقيمة "مصيدة"، تُستخدم للإشارة (على سبيل المثال) إلى تجاوز السعة. [ 12 ]

مراجع

  1. "عدد صحيح". قاموس علوم الحاسوب . مطبعة جامعة أكسفورد. 21 يناير 2016. ISBN 978-0-19-968897-5.
  2. تشيفر، إريك. "تمثيل الأعداد" . كلية سوارثمور . تم الاسترجاع في 11 سبتمبر 2011 .
  3. مادوسودان كوندا (2011-09-02). "نظرة على الميزات الجديدة في جافا 7 - أورايلي رادار" . Radar.oreilly.com . تاريخ الاسترجاع: 2013-10-15 .
  4. بار، آدم (23 أكتوبر 2018). مشكلة البرمجيات: لماذا يكتب المهندسون الأذكياء أكوادًا رديئة . مطبعة معهد ماساتشوستس للتكنولوجيا. ISBN 978-0-262-34821-8.
  5. "Sybase Adaptive Server Enterprise 15.5: أنواع البيانات الرقمية الدقيقة" .
  6. "أنواع البيانات الرقمية في MySQL 5.6" .
  7. "BigInteger (Java Platform SE 6)" . أوراكل . تم الاسترجاع في 11-09-2011 .
  8. 1 2 3 4 5 فوغ، أغنر (16 فبراير 2010). "اصطلاحات الاستدعاء لمترجمات لغة C++ المختلفة وأنظمة التشغيل: الفصل 3، تمثيل البيانات" (ملف PDF) . تم الاطلاع عليه بتاريخ 30 أغسطس 2010 .
  9. ثورستن ليمهاوس (13 سبتمبر 2011). "سجل النواة: واجهة برمجة التطبيقات x32 تتجاوز عيوب 64 بت" . www.h-online.com. مؤرشف من الأصل في 28 أكتوبر 2011. تم الاطلاع عليه في 1 نوفمبر 2011 .
  10. جيغير، إريك (18-12-1987). "معيار ANSI: ملخص لمبرمج لغة C" . تم الاسترجاع في 4-09-2010 .
  11. 1 2 مايرز، راندي (2000-12-01). "لغة C الجديدة: الأعداد الصحيحة في C99، الجزء 1" . drdobbs.com . تم الاطلاع عليه بتاريخ 2010-09-04 .
  12. 1 2 3 4 "ISO/IEC 9899:201x" (ملف PDF) . open-std.org. القسم 6.2.6.2، الفقرة 2. تاريخ الاسترجاع: 20-06-2016 .
  13. 1 2 3 "ISO/IEC 9899:201x" (ملف PDF) . open-std.org. القسم 5.2.4.2.1 . تاريخ الاسترجاع: 20 يونيو 2016 .
  14. "الأنواع الأساسية في لغة C++" . cppreference.com. مؤرشف من الأصل بتاريخ 13 يونيو 2011. تم الاطلاع عليه بتاريخ 5 ديسمبر 2010 .
  15. "الفصل 8.6.2 في الصفحة 12" (ملف PDF) . ecma-international.org.
  16. ملف مساعدة VB 6.0
  17. "أنواع البيانات الصحيحة والطويلة والبايت (VBA)" . microsoft.com . تم الاطلاع عليه بتاريخ 19-12-2006 .
  18. جيغير، إريك (18 ديسمبر 1987). "معيار ANSI: ملخص لمبرمج لغة C" . تم الاسترجاع في 4 سبتمبر 2010 .
  19. «تحدد لغة البرمجة C المعيارية الوطنية الأمريكية قواعد بناء الجملة ودلالات البرامج المكتوبة بلغة البرمجة C» . مؤرشفة من الأصل بتاريخ 22 أغسطس 2010. تم الاطلاع عليها بتاريخ 4 سبتمبر 2010 .
  20. "PHP: الأعداد الصحيحة - الدليل" .
  21. مسودة الإصدار السادس من ECMAScript: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-literals-numeric-literals مؤرشفة بتاريخ 16 ديسمبر 2013 على موقع Wayback Machine
  22. "SmallBASIC | MAXINT" . تم الاطلاع عليه بتاريخ 2025-01-20 .
  23. "Integer (Java Platform SE 8 )" . تم الاسترجاع في 2025-01-20 .
  24. "الحدود العددية" . cppreference.com.
  25. "حدود الأنواع الأساسية" . تم الاسترجاع في 2025-01-20 .
  26. "std::numeric_limits" . cppreference.com.
  27. "مقدمة" .
  28. "28.1. sys — معلمات ووظائف خاصة بالنظام — وثائق بايثون 2.7.18" . docs.python.org . تم الاطلاع عليه بتاريخ 17 سبتمبر 2025 .
  29. "sys — معلمات ووظائف خاصة بالنظام" . وثائق بايثون 3.13.7 . تم الاطلاع عليها بتاريخ 17 سبتمبر 2025 .
  30. "النوع الأولي i32" . doc.rust-lang.org/std.
  31. غروغونو، بيتر (1995). البرمجة باستخدام تورينغ وتورينغ الموجهة للكائنات . نيويورك: سبرينغر. ص 363. doi : 10.1007/978-1-4612-4238-3 . ISBN  978-0-387-94517-0. إل سي سي إن 95010802 .