17Aug

Bilgisayarlar Sıfırdan Neden Sayılır?

click fraud protection


Sıfırdan saymak birçok bilgisayar dilinde çok yaygın bir uygulamadır, ancak neden? Olayı keşfederken, neden bu kadar yaygın olduğunu okuyun.

Bugünkü Soru &Yanıt oturumu bize Q & A web sitelerinin topluluk temelli bir gruplandırması olan Stack Exchange'in bir alt bölümü olan SuperUser nezaketen geliyor.

Soru

SuperUser okuyucu DragonLord, çoğu işletim sisteminin ve programlama dilinin neden sıfır olduğunu merak ediyor. Yazıyor:

Bilgisayarlar geleneksel olarak sayısal değerleri sıfırdan başlayarak hesaplıyor.Örneğin, C tabanlı programlama dillerindeki diziler dizin sıfırdan başlar.

Bunun için hangi tarihsel nedenlerin varlığı ve sıfırdan saymanın pratik avantajları birinden saymak mı?

Neden gerçekten? Uygulamada olduğu gibi yaygın olarak da, uygulanması için pratik nedenler vardır.

Cevap

SuperUser katkıda bulunan Matteo aşağıdaki bilgileri sunar:

0'dan başlayan sayım dizileri, her bir öğenin bellek adresinin hesaplanmasını basitleştirir.

Belirli bir konumdaki belleğe bellekte kayıtlıysa( adres adı verilir) her bir elemanın konumu

instagram viewer
elemanı olarak hesaplanabilir( n) = adres + n * boyut_of_the_element

İlk elemanı birincil olarak düşünürseniz, hesaplama

elemanı olur( n) = adres +( n-1) * size_of_the_element

Büyük bir fark değil, her erişim için gereksiz bir çıkarma ekler.

Eklenecek şekilde düzenlendi:

  • Dizin dizinini ofset olarak kullanmak bir şart değil sadece bir alışkanlıktır. Birinci unsurun ofseti, sistem tarafından gizlenebilir ve elemanı atarken ve referanslarken dikkate alınır.
  • Dijkstra, "Neden sayılamanın sıfırdan başlaması gerektiğini"( pdf) bir makale yayınladı ve burada 0'dan başlamak neden daha iyi bir seçimdir diye açıklıyor. Sıfırdan başlamak, aralıkların daha iyi gösterilmesini sağlar.

Eğer cevabı derinlemesine araştırmak istiyorsanız, Dijkstra kağıdı bilgilendirici bir okundu.

Açıklamaya eklemek için bir şey var mı?Açıklamalarda ses çıkıyor. Diğer teknik uzman Stack Exchange kullanıcılarından daha fazla cevap okumak ister misiniz? Buradaki tam tartışma dizinine göz atın.