<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="id">
	<id>https://wiki.unissula.ac.id/index.php?action=history&amp;feed=atom&amp;title=Integer_overflow</id>
	<title>Integer overflow - Riwayat revisi</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.unissula.ac.id/index.php?action=history&amp;feed=atom&amp;title=Integer_overflow"/>
	<link rel="alternate" type="text/html" href="https://wiki.unissula.ac.id/index.php?title=Integer_overflow&amp;action=history"/>
	<updated>2026-09-15T15:02:44Z</updated>
	<subtitle>Riwayat revisi halaman ini di wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.unissula.ac.id/index.php?title=Integer_overflow&amp;diff=2779&amp;oldid=prev</id>
		<title>Maintenance script: Presentation V4: sitasi, referensi, Math, Wikimedia Commons, dan atribusi</title>
		<link rel="alternate" type="text/html" href="https://wiki.unissula.ac.id/index.php?title=Integer_overflow&amp;diff=2779&amp;oldid=prev"/>
		<updated>2026-08-23T14:06:13Z</updated>

		<summary type="html">&lt;p&gt;Presentation V4: sitasi, referensi, Math, Wikimedia Commons, dan atribusi&lt;/p&gt;
&lt;a href=&quot;https://wiki.unissula.ac.id/index.php?title=Integer_overflow&amp;amp;diff=2779&amp;amp;oldid=2379&quot;&gt;Lihat perubahan&lt;/a&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://wiki.unissula.ac.id/index.php?title=Integer_overflow&amp;diff=2379&amp;oldid=prev</id>
		<title>Maintenance script: Impor teks terkontrol dari Wikipedia bahasa Indonesia; revisi 28646997; atribusi sumber disertakan.</title>
		<link rel="alternate" type="text/html" href="https://wiki.unissula.ac.id/index.php?title=Integer_overflow&amp;diff=2379&amp;oldid=prev"/>
		<updated>2026-08-23T13:43:01Z</updated>

		<summary type="html">&lt;p&gt;Impor teks terkontrol dari Wikipedia bahasa Indonesia; revisi 28646997; atribusi sumber disertakan.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Halaman baru&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Dalam [[pemrograman komputer]], &amp;#039;&amp;#039;&amp;#039;integer overflow&amp;#039;&amp;#039;&amp;#039; (meluapnya bilangan bulat) terjadi ketika sebuah [[operasi aritmetika]] pada bilangan bulat berusaha membuat nilai numerik yang berada di luar rentang yang dapat direpresentasikan dengan jumlah digit tertentu – baik lebih tinggi dari nilai maksimum yang dapat direpresentasikan atau lebih rendah dari nilai minimum yang dapat direpresentasikan.&lt;br /&gt;
&lt;br /&gt;
Integer overflow menentukan luapan dari [[tipe data]] [[Integer (ilmu komputer)|integer]]. Sebuah luapan (dari jenis apa pun) terjadi ketika sebuah [[program komputer]] atau sistem mencoba menyimpan lebih banyak data dalam lokasi berukuran tetap daripada yang dapat ditangani, mengakibatkan [[kehilangan data]] atau [[Kerusakan data|korupsi data]]. Implementasi bilangan bulat paling umum dalam komputer modern adalah [[komplemen dua]]. Dalam komplemen dua, [[Bit numbering|bit paling signifikan]] mewakili [[Bit tanda|tanda]] (positif atau negatif), dan [[Bit numbering#Contoh integer bertanda|bit paling tidak signifikan]] yang tersisa mewakili angka tersebut. Sayangnya, untuk sebagian besar [[Arsitektur komputer|arsitektur]], [[Unit logika aritmetika|ALU]] tidak mengetahui representasi [[Sistem bilangan biner|biner]] tersebut [[Bilangan biner bertanda|bertanda]]. [[Operasi aritmetika]] dapat menghasilkan nilai bit yang melebihi ukuran tetap bit yang mewakili angka, hal ini menyebabkan bit tanda berubah, sebuah integer overflow. Contoh paling terkenal adalah: [[2.147.483.647]] + 1 = -2.147.483.648 dan -2.147.483.648 - 1 = 2.147.483.647.&lt;br /&gt;
&lt;br /&gt;
Pada beberapa prosesor seperti [[unit pemroses grafis]] (GPU) dan [[prosesor sinyal digital]] (DSP) yang mendukung [[aritmetika saturasi]], hasil yang meluap akan &amp;#039;&amp;#039;dijepit&amp;#039;&amp;#039;, yaitu diatur ke nilai minimum dalam rentang yang dapat direpresentasikan jika hasilnya di bawah minimum dan diatur ke nilai maksimum dalam rentang yang dapat direpresentasikan jika hasilnya di atas maksimum, daripada dibungkus.&lt;br /&gt;
&lt;br /&gt;
Kondisi luapan dapat memberikan hasil yang mengarah pada perilaku yang tidak diinginkan. Secara khusus, jika kemungkinannya tidak diantisipasi, luapan dapat membahayakan keandalan dan [[keamanan perangkat lunak|keamanan]] program.&lt;br /&gt;
&lt;br /&gt;
Untuk beberapa aplikasi, seperti pengatur waktu dan jam, pembungkusan pada luapan bisa diinginkan. Standar [[C11 (revisi standar C)|C11]] menyatakan bahwa untuk bilangan bulat tidak bertanda, pembungkusan modulo adalah perilaku yang ditentukan dan istilah luapan tidak pernah berlaku: &amp;quot;komputasi yang melibatkan operan tidak bertanda tidak pernah dapat meluap.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Asal usul ==&lt;br /&gt;
Integer overflow terjadi ketika sebuah [[operasi aritmetika]] pada bilangan bulat berusaha membuat nilai numerik yang berada di luar rentang yang dapat direpresentasikan dengan jumlah digit tertentu. Dalam konteks pemrograman komputer, bilangan bulat tersebut adalah [[Sistem bilangan biner|biner]], tetapi [[sistem bilangan]] [[Notasi posisional|posisional]] apa pun dapat memiliki hasil yang tidak valid dari operasi aritmetika jika posisinya terbatas. Seperti yang ditunjukkan dalam contoh odometer, menggunakan sistem [[desimal]], dengan batasan 6 posisi ([[Angka|digit]]) operasi berikut akan memiliki hasil yang tidak valid: . Demikian pula, sistem biner yang terbatas pada 4 posisi ([[bit]]) akan memiliki hasil yang tidak valid untuk operasi berikut: . Untuk kedua contoh, hasilnya akan memiliki nilai yang melebihi rentang yang dapat direpresentasikan oleh batasan tersebut. Cara lain untuk melihat masalah ini adalah bahwa operasi posisi [[Angka penting|paling signifikan]] memiliki [[Carry (aritmetika)|bawaan]] yang membutuhkan posisi/digit/bit lain untuk dialokasikan, melanggar batasan.&lt;br /&gt;
&lt;br /&gt;
Semua bilangan bulat dalam pemrograman komputer memiliki batasan nilai maks dan nilai min. Faktor utama untuk menentukan rentangnya adalah alokasi bit dan apakah itu [[bilangan biner bertanda|bertanda atau tidak bertanda]]. [[Integer (ilmu komputer)|Integer standar]] bergantung pada [[Platform komputasi|platform]] dan [[bahasa pemrograman]]. Representasi integer tambahan bisa lebih kecil atau lebih besar dari standar. Contohnya adalah [[Integer (ilmu komputer)|integer pendek]] dan [[Integer (ilmu komputer)|integer panjang]] secara berurutan. Bahun [[Aritmetika presisi berubah-ubah|presisi-berubah-ubah]] ada, tetapi akan dibatasi oleh [[Aritmetika presisi berubah-ubah|presisi yang ditetapkan sebelumnya]] atau memori sistem yang tersedia.&lt;br /&gt;
&lt;br /&gt;
Sebagian besar [[Unit logika aritmetika|ALU]] melakukan operasi pada [[Sistem bilangan biner|bilangan biner]] tak bertanda (positif). ALU ini tidak memiliki kemampuan apa pun untuk menangani bilangan bertanda (positif dan negatif). Karena sebagian besar angka dalam program perlu mendukung angka negatif, sebuah abstraksi digunakan, mendefinisikan ulang makna bit untuk menyertakan tanda. Solusi paling umum adalah [[komplemen dua]]. Sebagian besar bahasa pemrograman menyediakan konstruk ini. Sebuah integer bertanda 32-bit akan menggunakan [[Bit numbering|bit paling signifikan]] untuk menandakan [[Bit tanda|tanda]] (positif atau negatif), dan [[Bit numbering|31-bit]] yang tersisa untuk mewakili angka. Ketika sebuah [[Komplemen dua|operasi]] terjadi yang menghasilkan [[Carry (aritmetika)|bawaan]] melewati 31-bit yang dialokasikan untuk angka tersebut, bit tanda ditimpa. ALU tidak tahu bahwa itu melakukan kesalahan. Itu menjadi tanggung jawab program untuk mendeteksi kesalahan luapan ini.&lt;br /&gt;
&lt;br /&gt;
Untuk penggunaan integer tak bertanda dengan [[Arithmetic logic unit|lebar register]] ALU, ALU tidak mampu mengembalikan hasil dengan lebih banyak bit di luar lebarnya. ALU akan mengembalikan hasil bersama dengan bendera untuk carry-out. Ketika bendera ini dikembalikan benar, ALU telah mendeteksi luapan.&lt;br /&gt;
&lt;br /&gt;
Setelah luapan terdeteksi, itu menjadi tanggung jawab program untuk menanganinya dengan logika tambahan. Nilai hasil dari operasi tersebut [[Kerusakan data|rusak]] dan dapat menyebabkan masalah tambahan jika tidak ditangani dengan benar.&lt;br /&gt;
&lt;br /&gt;
Menggunakan integer dengan ukuran yang sama dengan [[Arithmetic logic unit|lebar register]] ALU akan memiliki kinerja terbaik di sebagian besar aplikasi. Ekstensi [[Instruction set architecture|instruksi]] [[Single instruction, multiple data|SIMD]] dapat menyediakan operasi tunggal untuk integer yang melebihi lebar register. Untuk prosesor [[x86]] [[32-bit computing|32-bit]], [[Streaming SIMD extensions|Streaming SIMD Extensions]] (SSE2) menambahkan register untuk integer 64-bit. Untuk prosesor [[x86-64]] [[64-bit computing|64-bit]], [[Advanced Vector Extensions]] (AVX) menambahkan register hingga integer 512-bit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ketika operasi aritmetika tak bertanda menghasilkan hasil lebih besar dari maksimum di atas untuk integer N-bit, sebuah luapan mengurangi hasil menjadi [[Modulo operation|modulo]] pangkat N dari 2, hanya mempertahankan bit paling tidak signifikan dari hasil dan secara efektif menyebabkan &amp;#039;&amp;#039;pembungkusan&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Khususnya, mengalikan atau menambahkan dua integer dapat menghasilkan nilai yang secara tak terduga kecil, dan mengurangkan dari integer kecil dapat menyebabkan pembungkusan ke nilai positif besar (misalnya, penambahan integer 8-bit 255 + 2 menghasilkan 1, yang adalah , dan sama halnya pengurangan 0 − 1 menghasilkan 255, sebuah representasi [[komplemen dua]] dari −1).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pembungkusan seperti itu dapat menyebabkan kerugian keamanan—jika nilai yang meluap digunakan sebagai jumlah byte untuk mengalokasikan buffer, buffer akan dialokasikan dengan ukuran yang secara tak terduga kecil, berpotensi leading ke [[buffer overflow]] yang, tergantung pada penggunaan buffer, mungkin pada gilirannya menyebabkan eksekusi kode sewenang-wenang.&lt;br /&gt;
&lt;br /&gt;
Jika variabel memiliki tipe [[Signed number representations|integer bertanda]], sebuah program dapat membuat asumsi bahwa variabel selalu berisi nilai positif. Sebuah integer overflow dapat menyebabkan nilai membungkus dan menjadi negatif, yang melanggar asumsi program dan dapat leading ke perilaku tak terduga (misalnya, penambahan integer 8-bit 127 + 1 menghasilkan −128, sebuah komplemen dua dari 128). (Sebuah solusi untuk masalah khusus ini adalah menggunakan tipe integer tak bertanda untuk nilai yang diharapkan dan diasumsikan oleh program tidak akan pernah negatif.)&lt;br /&gt;
&lt;br /&gt;
== Referensi ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pranala luar ==&lt;br /&gt;
&lt;br /&gt;
*[http://www.phrack.org/issues.html?issue=60&amp;amp;id=10#article Phrack #60, Basic Integer Overflows]&lt;br /&gt;
*[http://www.phrack.org/issues.html?issue=60&amp;amp;id=9#article Phrack #60, Big Loop Integer Protection]&lt;br /&gt;
*[https://web.archive.org/web/20121010025025/http://www.cs.cmu.edu/~dbrumley/pubs/integer-ndss-07.pdf Efficient and Accurate Detection of Integer-based Attacks]&lt;br /&gt;
*[http://projects.webappsec.org/Integer-Overflows WASC Threat Classification – Integer Overflows]&lt;br /&gt;
*[http://www.cs.utah.edu/~regehr/papers/tosem15.pdf Understanding Integer Overflow in C/C++]&lt;br /&gt;
*[https://www.allaboutcircuits.com/textbook/digital/chpt-2/binary-overflow/ Binary Overflow – Binary Arithmetic]&lt;br /&gt;
*[https://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC%209899:2011 ISO C11 Standard]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sumber dan atribusi ==&lt;br /&gt;
&lt;br /&gt;
Konten artikel ini diadaptasi dari [https://id.wikipedia.org/w/index.php?title=Integer+overflow&amp;amp;oldid=28646997 Wikipedia bahasa Indonesia], revisi 28646997 (2025-12-01T00:55:15Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
</feed>