Sesi Tanya & Jawab Hari ini hadir untuk memberi kami SuperUser - subdivisi Stack Exchange, pengelompokan situs web Q & A berbasis komunitas.
Pertanyaan
Pembaca SuperUser DragonLord penasaran mengapa kebanyakan sistem operasi dan bahasa pemrograman dihitung dari nol. Dia menulis:
Computers traditionally tally numerical values starting from zero. For example, arrays in C-based programming languages start from index zero.
What historical reasons exist for this, and what practical advantages does counting from zero have over counting from one?
Kenapa memang begitu? Seperti luasnya praktik, pasti ada alasan praktis untuk pelaksanaannya.
Jawabannya
Kontributor SuperUser, Matteo, menawarkan wawasan berikut:
Counting arrays from 0 simplifies the computation of the memory address of each element.
If an array is stored at a given position in memory (it’s called the address) the position of each element can be computed as
element(n) = address + n * size_of_the_element
Jika Anda mempertimbangkan elemen pertama yang pertama, perhitungan menjadi
element(n) = address + (n-1) * size_of_the_element
Bukan perbedaan besar tetapi menambahkan pengurangan yang tidak perlu untuk setiap akses.
Diedit untuk menambahkan:
- Penggunaan indeks array sebagai offset bukan merupakan persyaratan tetapi hanya sebuah kebiasaan. Pengimbangan elemen pertama dapat disembunyikan oleh sistem dan dipertimbangkan ketika mengalokasikan dan mereferensikan elemen.
- Dijkstra menerbitkan sebuah makalah “Mengapa penomoran harus dimulai dari nol” (pdf) di mana dia menjelaskan mengapa memulai dengan 0 adalah pilihan yang lebih baik. Mulai dari nol memungkinkan representasi rentang yang lebih baik.
Jika Anda ingin menggali lebih dalam jawaban, makalah Dijkstra adalah bacaan yang informatif.
Memiliki sesuatu untuk ditambahkan ke penjelasan? Bicaralah di komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange yang paham teknologi lainnya? Lihat diskusi lengkap di sini.