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

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

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

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

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

## أنواع الأعداد الصحيحة الشائعة في علوم الحاسوب

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

تدعم بعض اللغات، مثل ليسب وسمول توك وري أكس أكس وهاسكل وبايثون وراكو*، الأعداد الصحيحة العشوائية الدقيقة* (المعروفة أيضًا باسم *الأعداد الصحيحة اللانهائية* أو *[[حساب تدريج الدقة الحر (حوسبة)|حساب تدريج الدقة الحر]]*). قد تحتوي اللغات الأخرى التي لا تدعم هذا المفهوم كإنشاء مستوى أعلى مكتبات متاحة لتمثيل أعداد كبيرة جدًا باستخدام مصفوفات من المتغيرات الأصغر، مثل الجافا التي تحوي  أو لغة بيرل التي تملك فئة " ". هذه تستخدم أكبر قدر من ذاكرة الحاسب كما هو ضروري لتخزين الأرقام؛ ومع ذلك، فإن المعالج يحتوي فقط على كمية محدودة من التخزين، لذلك يمكنهم أيضًا تمثيل مجموعة فرعية محدودة من الأعداد الصحيحة الرياضية. تدعم هذه المخططات أرقامًا كبيرة جدًا، على سبيل المثال، يمكن استخدام كيلوبايت واحد من الذاكرة لتخزين أرقام تصل إلى 2466 رقمًا عشريًا.

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

## بايت والثمانية

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

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

## الكلمة

يستخدم مصطلح «كلمة» لمجموعة صغيرة من وحدات البت التي يتم التعامل معها في وقت واحد بواسطة معالجات من بنية معينة. وبالتالي فإن حجم الكلمة خاص بوحدة المعالجة المركزية. تم استخدام العديد من أحجام الكلمات المختلفة، بما في ذلك 6 و 8 و 12 و 16 و 18 و 24 و 32 و 36 و 39 و 40 و 48 و 60 و 64 بت. نظرًا لأنه بنيوياً، تُحدد حجم *الكلمة* عادةً بواسطة وحدة المعالجة المركزية الأولى في العائلة، بدلاً من خصائص وحدة المعالجة المركزية المتوافقة لاحقًا. معاني المصطلحات المشتقة من *الكلمة*، مثل كلمة طويلة *longword* وكلمة مضاعفة *doubleleword* وكلمة رباعية *quadword* ونصف كلمة *halfword* ، تختلف أيضًا باختلاف وحدة المعالجة المركزية ونظام التشغيل.

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

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

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

## عدد صحيح طويل
عدد صحيح طويل يمكن أن يمثل كله صحيحا التي نطاق أكبر من أو مساوية لعدد صحيح القياسية على نفس الجهاز. في لغة سي، يُشار إلى الأعداد الصحيحة من النوع الطويل بـ . والتي يَفترض أنها تساوي 32 بت على الأقل، عندها تكون أكبر من حجم العدد الصحيح القياسي، لكنها تخالف ذلك بعض الأحيان، إلّا أنَّ البرنامج الموافق يمكنه تخزين القيم بأمان بين - (2 31 −1)  و 2 31 −1،  ولكنه قد لا يفترض أن النطاق ليس أكبر من ذلك.

## عدد صحيح طويل طويل
يحتوي المدخل طويل طويل (long long) في الإصدار سي99 من لغة البرمجة سي والإصدار سي++ 11 بكلمة محجوزة بالشكل`long long` ، وتكون قيمة هذا الحقل في لغة سي++ مساويةً لضعف الحد الأدنى من السعة القياسية للمدخل `long`. هذا النوع غير مدعوم من قبل المترجمات التي تتطلب كود سي ليكون متوافقًا مع معيار سي++ السابق، وهو غير موجود في مترجمات سيي++ 03 لعدم توافقع مع معايير ANSI / ISO للمترجم ومتطلبات الحد الأدنى لنطاقات محددة ضمنها، والتي تكافئ في الأعداد المؤشرة المجال بين −(263−1) حتى 263−1 ومن 0 حتّى 2 64 -1 ل لغير المؤشرة منها  لا بد منه تتحقق؛ ومع ذلك، يُسمح بتوسيع هذا النطاق. يمكن أن يكون هذا مشكلة عند تبادل التعليمات البرمجية والبيانات بين الأنظمة الأساسية، أو القيام بوصول مباشر إلى الأجهزة. وبالتالي، هناك عدة مجموعات من الرؤوس توفر أنواع عرض دقيقة مستقلة للمنصة. توفر مكتبة C *[[أنواع البيانات في سي|القياسية stdint.h]]* ؛ تم تقديم هذا في C99 و C ++ 11.

## ملاحظات

## انظر أيضاً
* كلمة
* بيانات
* بايت

## المراجع

تصنيف:أنواع البيانات
تصنيف:حسابيات حاسوبية
تصنيف:علم الحاسوب