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

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

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

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

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

 أنواع الأعداد الصحيحة الشائعة في علوم الحاسوب 
 البتات الاسم المجال (باعتبار المؤشر بطريقة المتمم الثنائي) القيمة العشرية يستخدم في التطبيقات سي (لغة برمجة)/سي++ سي شارب باسكال (لغة برمجة) ودلفي (لغة برمجة) جافا (لغة برمجة) إس كيو إل فورتران دي (لغة برمجة) 4 نايبل، نصف ثماني (SemiOctet)مع إشارة: من −8 حتى 7، أي من −(23) حتى 23 − 1  نظام عشري مشفر ثنائيا، أحادي، التمثيل العشري الرقمي rowspan="2"  rowspan="2"  rowspan="2"  rowspan="2"  rowspan="2"  rowspan="2"  rowspan="2" بدون إشارة: من 0 حتى 15، المكافئ لـ 24 − 1  8 بايت، ثمانية (حوسبة), i8, u8المؤشر: من −128 حتى 127، أي من −(27) حتّى27 − 1  محارف الأسكي، ترميز المحارففي صيغة التحويل الموحد-8 ,       غير المؤشر: من 0 حتى 255, المكافئ لـ 28 − 1  ,        16 نصف كلمة (HalfWord)، كلمة (بنية الحاسوب) (Word)، قصير (Short)، i16 u16مع إشارة: من −32,768 حتى 32,767, من −(215) حتى 215 − 1  مجموعة المحارف العالمية الإصدار 2 ()، ترميز المحارف في يو تي اف-16 ترميز المحارف , ,       غير المؤشر: من 0 حتى 65,535, المكافئ لـ 216 − 1  ,        32 كلمة (Word)، طويل (Long)، كلمة مضاعفة (Double Word)، كلمة طويلة (Long Word)، عدد صحيح (int) i32, u32مع إشارة: من −2,147,483,648 حتى 2,147,483,647، أي من −(231) حتى 231 − 1  محارف يو تي اف-32، عمق لوني مع ألفا، ترميز رباعي المحارف، المؤشرات في معمارية 32 بت , ,   ;     غير المؤشر: من 0 حتى 4,294,967,295, المكافئ لـ 232 − 1  , ,   ; ;      64 كلمة، كلمة مضاعفة (Double Word)، طويل طويل (Long long)، رباعي (quad)، كلمة رباعية (QuadWord)، كلمة من النوع qword 
الصنف int64، وi64, u64مع إشارة: من −9,223,372,036,854,775,808 حتى قوة العدد اثنين، أي من −(263) حتى 263 − 1  التوقيت (ميللي ثانية في توقيت يونكس)، المؤشرات فيمعمارية 64 بت , ,       غير المؤشر: من 0 حتى 18,446,744,073,709,551,615, المكافئ لـ 264 − 1  ,   ;      128 كلمة ثمانية (octaword)، وكلمة رباعية مضاعفة (double quadword) والأنواع i128, u128مع إشارة: من −170,141,183,460,469,231,731,687,303,715,884,105,728 حتى 170,141,183,460,469,231,731,687,303,715,884,105,727, من −(2127) حتى 2127 − 1  حسابات علمية معقدة، عناوينبروتوكول الإنترنت (الإصدار السادس)، معرّف فريد عالميًا () C: متاح فقط كملحق غير قياسي خاص بالمترجمrowspan=2 rowspan=2 rowspan=2  rowspan="2"    غير المؤشر: من 0 حتى 340,282,366,920,938,463,463,374,607,431,768,211,455, المكافئ لـ 2128 − 1    n عدد صحيح بعدد n(الحالة العامَّة) مع إشارة: −(2n−1) حتى (2n−1 − 1) (n − 1) log10 2 أيدا (لغة برمجة):  غير المؤشر: 0 حتى (2n − 1) n log10 2 Ada: , ; المكتبات القياسية أو الفئات العشرية الكبيرة أوالعشرية للمكتبات الحسابية الرياضية التابعة لجهات خارجية في العديد من اللغات مثل Python و C ++ ، إلخ.
تدعم وحدات المعالجة المركزية المختلفة أنواعًا مختلفة من البيانات الصحيحة. عادةً، يدعم العتاد الصلب البيانات بنوعيها المؤشر وبدون إشارات، لكن ضمن مجال محدد صغير وثابت القيم. يسرد الجدول أعلاه عروض الأنواع الأرقام الصحيحة التي تدعمها المعالجات الشائعة في الأجهزة. توفر لغات البرمجة عالية المستوى المزيد من الاحتمالات. من الشائع أن يكون لديك نوع أرقام صحيح «مزدوج العرض» يحتوي على ضعف عدد البتات مثل أكبر الأنواع المدعومة من الأجهزة. تحتوي العديد من اللغات أيضًا على أنواع حقل بت (عدد محدد من البتات، يقيَّد عادةً ليكون أقل من الحد الأقصى للعرض المدعوم من الأجهزة) وأنواع النطاق (التي يمكن أن تمثل فقط الأعداد الصحيحة في نطاق محدد).

تدعم بعض اللغات، مثل ليسب وسمول توك وري أكس أكس وهاسكل وبايثون وراكو، الأعداد الصحيحة العشوائية الدقيقة (المعروفة أيضًا باسم الأعداد الصحيحة اللانهائية أو حساب تدريج الدقة الحر). قد تحتوي اللغات الأخرى التي لا تدعم هذا المفهوم كإنشاء مستوى أعلى مكتبات متاحة لتمثيل أعداد كبيرة جدًا باستخدام مصفوفات من المتغيرات الأصغر، مثل الجافا التي تحوي  أو لغة بيرل التي تملك فئة " ". هذه تستخدم أكبر قدر من ذاكرة الحاسب كما هو ضروري لتخزين الأرقام؛ ومع ذلك، فإن المعالج يحتوي فقط على كمية محدودة من التخزين، لذلك يمكنهم أيضًا تمثيل مجموعة فرعية محدودة من الأعداد الصحيحة الرياضية. تدعم هذه المخططات أرقامًا كبيرة جدًا، على سبيل المثال، يمكن استخدام كيلوبايت واحد من الذاكرة لتخزين أرقام تصل إلى 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 بت على جميع الأجهزة.

+ أحجام الأعداد الصحيحة القصيرة الشائعةلغة برمجةاسم نوع البياناتالإشاراتالحجم بالبايتالحد الأدنى للقيمةالقيمة القصوىسي وسي++ shortمؤشر2−32767  +32767 unsigned shortغير مؤشر2065.535سي# shortمؤشر2-32768+32767 ushortغير مؤشر2065.535جافا shortمؤشر2-32768+32767

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

+ أنواع الأعداد الصحيحة الطويلة الشائعةلغة البرمجةنوع الموافقةالمنصاتاسم نوع البياناتالتخزين بالبايتنطاق العدد الصحيحسي ISO / ANSI C99.0المعيار الدولييونكس، أنظمة 16/32 
ويندوز، أنظمة 16/32/64 بت 4
(الحد الأدنى من المتطلبات 4)−2,147,483,647 إلى +2,147,483,647سي ISO / ANSI C99.0المعيار الدولييونكس أنظمة 64 بت [lower-alpha 7]8 (الحد الأدنى من المتطلبات 4)−9,223,372,036,854,775,807 إلى +9,223,372,036,854,775,807س++ ISO / ANSIالمعيار الدولييونكس، ويندوز، 
نظام 16/32 بت [lower-alpha 7]4  (الحد الأدنى من المتطلبات 4)−2,147,483,648 إلى +2,147,483,647
</br>C ++ / CLIالمعيار الدولي  ECMA-372يونكس، ويندوز،أنظمة 16/32 بت [lower-alpha 7]4  (الحد الأدنى من المتطلبات 4)−2,147,483,648 إلى +2,147,483,647فيجوال بيسكمعيار الشركةويندوز4 VB 6.0 help file−2,147,483,648 إلى +2,147,483,647فيجوال بيسك للتطبيقاتمعيار الشركةنظام التشغيل ويندوز وMac OS X4 −2,147,483,648 إلى +2,147,483,647خادم قاعدة البياناتمعيار الشركةويندوز8−9,223,372,036,854,775,808 إلى +9,223,372,036,854,775,807سي شارب / فيجوال بيسك دوت نتمعيار ECMA الدوليمايكروسوفت دوت نت وفيجوال بيسك دوت نت أو8−9,223,372,036,854,775,808 إلى +9,223,372,036,854,775,807جافاالمعيار الدولي/ الشركةمنصة جافا8−9,223,372,036,854,775,808 إلى +9,223,372,036,854,775,807باسكال ؟ويندوز، يونيكس8−9,223,372,036,854,775,808 إلى +9,223,372,036,854,775,807

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

 ملاحظات 

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

 المراجع 

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