Skip to main content

Apa itu overflow integer?

Integer overflow mengacu pada fenomena yang terjadi pada tipe data komputer tertentu di mana tanda -tanda mereka beralih dari positif ke negatif, atau sebaliknya, ketika mereka mencapai ujung rentang yang berlaku.Dalam rentang komputer, tipe data integer memiliki rentang melingkar, dan ketika mereka mencapai salah satu ujung jangkauannya, mereka segera pindah ke ujung lain dari jangkauan mereka.Ini juga disebut integer overflow.

Integer yang ditandatangani dapat memegang berbagai nilai dari -2 31 hingga (2 31 ) - 1. Integer ini tidak dapat memiliki nilai (-2 31 ) - 1;Sebaliknya, angka berikutnya bertambah adalah di ujung lain dari kisarannya: (2 31 - 1).Perubahan dari negatif ke positif di akhir jangkauannya adalah contoh integer overflow.Dengan cara yang sama, bilangan bulat tidak dapat memiliki nilai 2 31 ;Nilai ini sebaliknya akan beralih ke ujung lain dari kisarannya dan menjadi -2 31 .

Luapan ini memiliki konsekuensi yang signifikan saat pemrograman.Array hanya dapat memiliki banyak indeks di dalamnya seperti jenis integer memungkinkan, dan indeks negatif tidak dihitung.Jika seorang programmer mencoba membuat array yang lebih besar dari tipe integer memungkinkan, kesalahan memori yang signifikan dapat terjadi karena integer overflow akan menghasilkan indeks negatif.Ini sangat berbahaya dalam bahasa yang tidak memiliki batas eksplisit memeriksa array, seperti C ++.

Ketika integer overflow terjadi, jenis overflow terkait seperti buffer overflow, heap overflow, dan stack buffer overflow dapat terjadi.Dalam semua kasus ini, integer overflow bertindak untuk membanjiri struktur memori dengan lebih banyak data daripada yang dapat dipegang oleh struktur tersebut.Luapan ini, dalam program sederhana, tidak sering melakukan lebih dari sekadar menyebabkan kesalahan penulisan yang tidak valid atau tidak valid.Manipulasi masalah ini oleh peretas, bagaimanapun, dapat merekayasa kesalahan memori yang dapat menyebabkan masalah yang lebih serius.

Dalam sebagian besar program sederhana, integer overflow bukan masalah besar.Batas jenis integer cukup besar sehingga masalah overflow tidak ikut bermain kecuali banyak data sedang ditangani sekaligus.Dalam beberapa kasus overflow dapat dikurangi, seperti dalam kasus penambahan penghitung, dengan menggunakan tipe data yang lebih besar dengan rentang yang lebih besar.Tipe data yang lebih besar dapat, secara teori, akhirnya menghadapi masalah overflow yang sama, tetapi ketika rentang tipe data semakin besar, kemungkinan melakukannya semakin kecil.Setiap rentang tipe data integer setidaknya dua kali ukuran terkecil berikutnya, jadi ada ruang yang cukup untuk data tambahan.