Beranda » bagaimana » Mengapa Komputer Menghitung Dari Nol?

    Mengapa Komputer Menghitung Dari Nol?


    Menghitung dari nol adalah praktik yang sangat umum dalam banyak bahasa komputer, tetapi mengapa? Baca terus saat kami menjelajahi fenomena dan mengapa itu begitu luas.

    Sesi Tanya Jawab hari ini datang kepada kami berkat SuperUser-subdivisi Stack Exchange, pengelompokan situs web Q&A berbasis komunitas.

    Pertanyaan

    Pembaca SuperUser DragonLord ingin tahu mengapa sebagian besar sistem operasi dan bahasa pemrograman dihitung dari nol. Dia menulis:

    Komputer secara tradisional menghitung nilai numerik mulai dari nol. Misalnya, array dalam bahasa pemrograman berbasis C mulai dari indeks nol.

    Apa alasan historis yang ada untuk ini, dan keuntungan praktis apa yang dihitung dari nol memiliki lebih dari menghitung dari satu?

    Mengapa memang? Meskipun praktiknya meluas, tentu ada alasan praktis untuk penerapannya.

    Jawabannya

    Kontributor SuperUser, Matteo, menawarkan wawasan berikut:

    Menghitung array dari 0 menyederhanakan perhitungan alamat memori setiap elemen.

    Jika array disimpan pada posisi tertentu dalam memori (disebut alamat), posisi setiap elemen dapat dihitung sebagai

    elemen (n) = alamat + n * size_of_the_element 

    Jika Anda menganggap elemen pertama sebagai yang pertama, perhitungannya menjadi

    elemen (n) = alamat + (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 penyeimbang bukan keharusan, tetapi hanya kebiasaan. Offset 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 ia menjelaskan mengapa memulai dengan 0 adalah pilihan yang lebih baik. Mulai dari nol memungkinkan representasi rentang yang lebih baik.

    Jika Anda ingin mempelajari jawabannya lebih dalam, makalah Dijkstra adalah bacaan yang informatif.


    Punya sesuatu untuk ditambahkan ke penjelasan? Berbunyi dalam komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange yang mengerti teknologi lainnya? Lihat utas diskusi lengkap di sini.