طفح عدد صحيح
[[ملف:Odometer rollover.jpg|تصغير|250px|طفح لعداد سيارة يبين أحد أشكال الطفح الميكانيكي.

عندما تكون كل الأرقام أقصى قيمة (9) ويتم إضافة واحد تؤدي سلسلة الجمع ونقل الباقي إلى تغيير جميع الأرقام إلى صفر. ولكن بسبب عدم وجود رقم أقصى اليسار يمكنه حمل القيمة الجديدة يتم فقدان الواحد ويبدأ العد من الصفر]]
{{بحاجة لمصدر|'''طفح عدد صحيح'''|تاريخ=أبريل 2019}} يحدث عندما تزيد القيمة المراد تخزينها عن [[مجال فاصل (رياضيات)|المجال]] المتاح ل[[نوع بيانات|نوع]] التخزين، بمعنى أن [[ذاكرة (توضيح)|الذاكرة]] المتاحة لا تكفي تمثيل القيمة.

بالنسبة للأعداد الموجبة وكذلك السالبة في الأنظمة [[متمم ثنائي|المتممة ثنائيا]] يؤدي الطفح إلى الرجوع لأصغر قيمة ممكنة، فمثلا نوع uint32_t حجمه 32 [[بت]]. في هذه الحالة سيعود إلى الصفر عند محاولة تخزين رقم 4294967296 (2 مرفوعة لأس 32) .

توفر المعالجات في العادة إمكانية الكشف عن حدوث طفح. مثلا عائلة [[إنتل 8086|x86]] توفر OF &rlm; (Overflow Bit) يمكن التأكد من قيمتها لضمان عدم حدوث طفح.

== التعامل مع الطفح ==
{| class="wikitable" style="float:left; margin-right:1em; margin-left:0; width:40%;"
|+ التعامل مع الطفح من قبل بعض اللغات البرمجية
|-
! اللغة
! عدد صحيح دون إشارة
! عدد صحيح ذو إشارة
|-
| [[سي (لغة برمجة)|سي]] || باقي قسمة العدد على سعة النوع || سلوك غير معرف
|-
| [[سي++]] || باقي قسمة العدد على سعة النوع || سلوك غير معرف
|-
| [[سي شارب)|سي شارب]] || colspan="2" | <code>System.OverflowException</code> يتم إطلاقها إذا كان الكود بداخل checked {}<ref>[https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/checked-and-unchecked Checked and Unchecked (C# Reference)<!-- عنوان مولد بالبوت -->] {{Webarchive|url=https://web.archive.org/web/20161116034342/https://msdn.microsoft.com/en-us/library/khy08726.aspx |date=16 نوفمبر 2016}}</ref>
|-
| [[جافا (لغة برمجة)|جافا]] || النوع غير موجود || يتم العودة إلى أصغر قيمة ممكنة للنوع
|-
| [[بايثون (توضيح)|بايثون]] || النوع غير موجود || يتم التحويل إلى نوع أكبر
|-
| [[بي إتش بي]] || النوع غير موجود	 || يتم التحويل إلى عدد ذو فاصلة عائمة
|}

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

في اللغات التي لا تشترط تحديد نوع معين للمتغير، يتم عادة تحويل المتغير إلى نوع عدد صحيح جديد لمنع الطفح. من الأمثلة على ذلك بايثون و[[روبي (لغة برمجة)|روبي]] بينما تقوم لغات مثل PHP بالتحويل إلى نوع [[حسابات الفاصلة المتحركة|فاصلة عائمة]].

في حالة حدوث طفح لم يتم التعامل معه ربما يتغير سير البرنامج. يتمكن المستخدم جراء ذلك من التأثير على عمل البرنامج بطرق لم يخطط لها المبرمج وهو مايؤدي إلى [[ثغرة أمنية (حوسبة)|ثغرات أمنية]].

== مراجع ==
{{مراجع}}

{{شريط بوابات|أمن الحاسوب|برمجة الحاسوب|تقانة}}

[[تصنيف:أخطاء البرمجة]]
[[تصنيف:استغلالات أمن الحاسوب]]
[[تصنيف:حسابيات حاسوبية]]
عندما تكون كل الأرقام أقصى قيمة (9) ويتم إضافة واحد تؤدي سلسلة الجمع ونقل الباقي إلى تغيير جميع الأرقام إلى صفر. ولكن بسبب عدم وجود رقم أقصى اليسار يمكنه حمل القيمة الجديدة يتم فقدان الواحد ويبدأ العد من الصفر
 يحدث عندما تزيد القيمة المراد تخزينها عن المجال المتاح لنوع التخزين، بمعنى أن الذاكرة المتاحة لا تكفي تمثيل القيمة.

بالنسبة للأعداد الموجبة وكذلك السالبة في الأنظمة المتممة ثنائيا يؤدي الطفح إلى الرجوع لأصغر قيمة ممكنة، فمثلا نوع uint32_t حجمه 32 بت. في هذه الحالة سيعود إلى الصفر عند محاولة تخزين رقم 4294967296 (2 مرفوعة لأس 32) .

توفر المعالجات في العادة إمكانية الكشف عن حدوث طفح. مثلا عائلة x86 توفر OF ‏ (Overflow Bit) يمكن التأكد من قيمتها لضمان عدم حدوث طفح.

 التعامل مع الطفح 
+ التعامل مع الطفح من قبل بعض اللغات البرمجية اللغة عدد صحيح دون إشارة عدد صحيح ذو إشارة سي  باقي قسمة العدد على سعة النوع  سلوك غير معرف سي++  باقي قسمة العدد على سعة النوع  سلوك غير معرف سي شارب  System.OverflowException يتم إطلاقها إذا كان الكود بداخل checked {}Checked and Unchecked (C# Reference)  جافا  النوع غير موجود  يتم العودة إلى أصغر قيمة ممكنة للنوع بايثون  النوع غير موجود  يتم التحويل إلى نوع أكبر بي إتش بي  النوع غير موجود	  يتم التحويل إلى عدد ذو فاصلة عائمة

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

في اللغات التي لا تشترط تحديد نوع معين للمتغير، يتم عادة تحويل المتغير إلى نوع عدد صحيح جديد لمنع الطفح. من الأمثلة على ذلك بايثون وروبي بينما تقوم لغات مثل PHP بالتحويل إلى نوع فاصلة عائمة.

في حالة حدوث طفح لم يتم التعامل معه ربما يتغير سير البرنامج. يتمكن المستخدم جراء ذلك من التأثير على عمل البرنامج بطرق لم يخطط لها المبرمج وهو مايؤدي إلى ثغرات أمنية.

 مراجع 

تصنيف:أخطاء البرمجة
تصنيف:استغلالات أمن الحاسوب
تصنيف:حسابيات حاسوبية