Sıfır tabanlı numaralandırma - Zero-based numbering

Sıfır tabanlı numaralandırma bir yolu numaralama a'nın başlangıç ​​öğesi sıra atandı indeks Her gün tipik olduğu gibi dizin 1 yerine 0 matematiksel olmayan veya programlamayan koşullar. Sıfır tabanlı numaralandırma altında, ilk öğe bazen sıfırıncı eleman[1] Yerine ilk eleman; sıfırıncı bir icat edilmiş sıra numarası numaraya karşılık gelen sıfır. Bazı durumlarda, (başlangıçta) belirli bir sıraya ait olmayan, ancak doğal olarak ilk öğesinin önüne yerleştirilebilen bir nesne veya değer sıfırıncı öğe olarak adlandırılabilir. Sıralı olarak sıfırın kullanılmasının doğruluğu konusunda geniş bir fikir birliği yoktur (ne de terimin kullanımı hakkında sıfırıncı) çünkü bağlamdan yoksun olduğunda dizinin sonraki tüm öğeleri için belirsizlik yaratır.

0'dan başlayan numaralandırma dizileri, özellikle matematik notasyonunda oldukça yaygındır. kombinatorik ancak matematik için programlama dilleri genellikle 1'den indekslenir.[kaynak belirtilmeli ] İçinde bilgisayar Bilimi, dizi dizinler genellikle modern programlama dillerinde 0'dan başlar, bu nedenle bilgisayar programcıları sıfırıncı başkalarının kullanabileceği durumlarda ilkvb. Bazı matematiksel bağlamlarda, sıfır tabanlı numaralandırma, sıralı formların daha önce gelmesi gereken bariz bir adayla iyi kurulmuş bir anlamı olduğunda, kafa karışıklığı olmadan kullanılabilir. ilk; örneğin a sıfırıncı türev bir fonksiyonun kendisi, fonksiyonun kendisidir. ayırt edici sıfır kere. Bu tür bir kullanım, diziye uygun şekilde ait olmayan ancak ondan önce gelen bir öğeyi adlandırmaya karşılık gelir: sıfırıncı türev gerçekte bir türev değildir. Ancak, tıpkı ilk türev öncesinde ikinci türevaynı zamanda sıfırıncı türev (veya orijinal işlevin kendisi), ilk türev.

Bilgisayar Programlama

Menşei

Martin Richards yaratıcısı BCPL dil (öncüsü C ), dildeki dizi içeriğine erişmeye başlamak için doğal konum olarak 0'dan başlayan diziler tasarlandı, çünkü bir Işaretçi p bir adres olarak kullanılır pozisyona erişir p Bellekte + 0.[2][3] Kanadalı sistem analisti Mike Hoye, Richards'a bu sözleşmeyi seçme nedenlerini sordu. BCPL ilk olarak IBM 7094; dil hayır tanıttı dolaylı aramalar -de Çalışma süresi, bu nedenle bu diziler tarafından sağlanan dolaylı optimizasyon derleme zamanında kullanıldı.[3] Optimizasyon yine de önemliydi.[3][4]

Edsger W. Dijkstra daha sonra uygun bir not yazdı Numaralandırma neden sıfırdan başlamalı?[5] 1982'de, dizi endekslerinin olası tasarımlarını zincirlenmiş bir eşitsizlik içine alarak analiz ederek, keskin ve standart eşitsizlikleri dört olasılıkla birleştirerek, sıfır tabanlı dizilerin en iyi şekilde sıfırdan başlayan örtüşmeyen dizin aralıklarıyla temsil edildiğini gösterdi. , ima ederek açık, yarı açık ve kapalı aralıklarla gerçek sayılarda olduğu gibi. Dijkstra'nın bu kuralı tercih etme kriterleri ayrıntılı olarak boş dizileri daha doğal bir şekilde temsil etmesidir (aben < a ?) kapalı "aralıklardan" (aben ≤ (a−1)?) Ve doğalların yarı açık "aralıkları" ile bir alt dizinin uzunluğu, üst eksi alt sınıra eşittir (aben < b verir (ba) için olası değerler ben, ile a, b, ben tüm doğallar).

Programlama dillerinde kullanım

Bu kullanım, birçok etkili Programlama dilleri, dahil olmak üzere C, Java, ve Lisp. Bu üçte, dizi türleri (C dizileri, Java dizileri ve listeleri ve Lisp listeleri ve vektörleri) sıfır alt simge ile başlayarak dizinlenir. Özellikle dizilerin yakından bağlı olduğu C'de Işaretçi aritmetik, bu daha basit bir uygulama sağlar: alt simge, bir dizinin başlangıç ​​konumundan bir ofseti ifade eder, bu nedenle ilk eleman sıfır ofsetine sahiptir.

Belleğe bir adres ve bir ofset ile başvurma, doğrudan bilgisayar donanımı hemen hemen tüm bilgisayar mimarilerinde, bu nedenle C'deki bu tasarım ayrıntısı, bazı insan faktörleri pahasına derlemeyi kolaylaştırır. Bu bağlamda sıra olarak "sıfırıncı" kullanmak tam olarak doğru değil, bu meslekte yaygın bir alışkanlıktır. Gibi diğer programlama dilleri Fortran veya COBOL, bir ile başlayan dizi aboneleri vardır, çünkü bunlar üst düzey programlama dilleri ve bu nedenle her zamanki gibi sıra sayıları hangisinden önce sıfırın icadı uzun bir süre.

Pascal bir dizinin aralığının herhangi bir sıra türünde olmasına izin verir (numaralandırılmış türler dahil). APL programatik olarak çalışma süresi sırasında indeks kaynağının 0 veya 1 olarak ayarlanmasına izin verir.[6][7] Gibi bazı yeni diller Lua ve Visual Basic aynı nedenle aynı sözleşmeyi kabul etmişlerdir.

Sıfır, programlama ve donanım tasarımındaki en temel türlerden biri olan en düşük işaretsiz tamsayı değeridir. Bilgisayar biliminde, sıfır bu nedenle çoğu tür sayısal değer için temel durum olarak kullanılır özyineleme. Bilgisayar bilimlerinde kanıtlar ve diğer matematiksel akıl yürütme türleri genellikle sıfır ile başlar. Bu nedenlerden dolayı, bilgisayar biliminde bir yerine sıfırdan saymak alışılmadık bir durum değildir.

Bilgisayar korsanları ve bilgisayar bilimcileri, özellikle bir giriş niteliğindeyse, bir yayının ilk bölümünü "Bölüm 0" olarak adlandırmayı severler. Klasik örneklerden biri, K&R. Son yıllarda bu özellik birçok insan arasında da gözlemlenmiştir. saf matematikçiler, birçok yapı 0'dan numaralandırılacak şekilde tanımlanır.

Bir dizi bir çevrimi temsil etmek için kullanılıyorsa, indeksi bir modulo işlevi sıfır ile sonuçlanabilir.

Sayısal özellikler

Sıfır tabanlı numaralandırma ile bir aralık yarı açık olarak ifade edilebilir Aralık, [0,n), kapalı aralığın aksine, [1,n]. Genellikle algoritmalarda ortaya çıkan boş aralıkları, [1,0] gibi geniş kurallara başvurmadan kapalı bir aralıkla ifade etmek zordur. Bu özellik nedeniyle, sıfır tabanlı indeksleme potansiyel olarak tek tek ve çit direği hataları.[5] Öte yandan, tekrar sayısı n önceden hesaplanır ve 0'dan n−1 (kapsayıcı) daha az sezgisel. Bazı yazarlar, varlıkların diğer bağlamlarda nasıl indekslendiğine daha yakından karşılık geldiğinden tek tabanlı indekslemeyi tercih eder.[8]

Bu sözleşmenin bir başka özelliği de Modüler aritmetik modern bilgisayarlarda uygulandığı gibi. Genellikle modulo işlevi herhangi bir tamsayı modulo eşler N sayılardan birine 0, 1, 2, ..., N − 1, nerede N ≥ 1. Bu nedenle, algoritmalardaki birçok formül (karma tablo indekslerini hesaplamak için olanlar gibi), dizi indeksleri sıfırdan başladığında modulo işlemi kullanılarak kodda zarif bir şekilde ifade edilebilir.

İşaretçi işlemleri, yukarıda belirtilen temel adres / uzaklık mantığı nedeniyle sıfır tabanlı bir dizinde daha zarif bir şekilde ifade edilebilir. Örneklemek için varsayalım a ... hafıza adresi bir dizinin ilk elemanının ve ben istenen elemanın indeksidir. İstenen elemanın adresini hesaplamak için, dizin numaraları 1'den sayılırsa, istenen adres bu ifade ile hesaplanır:

a + s × (ben − 1)

nerede s her bir öğenin boyutudur. Buna karşılık, dizin numaraları 0'dan sayılırsa, ifade şöyle olur:

a + s × ben

Bu daha basit ifade, hesaplamak için daha etkilidir. Çalışma süresi.

Bununla birlikte, 1'den dizileri indekslemek isteyen bir dil, her dizi adresinin temsil ettiği kuralı benimseyebilir. a′ = as; yani, birinci dizi elemanının adresini kullanmak yerine, böyle bir dil, ilk gerçek elemandan hemen önce bulunan hayali bir elemanın adresini kullanacaktır. 1 tabanlı bir dizin için dizin oluşturma ifadesi şu şekilde olacaktır:

a′ + s × ben

Bu nedenle, sıfır tabanlı indekslemenin çalışma zamanındaki verimlilik faydası içsel değildir, ancak hayali sıfırıncı öğenin adresi yerine ilk öğesinin adresi ile bir diziyi temsil etme kararının bir ürünüdür. Ancak, bu hayali elemanın adresi, bellekteki diziyle ilgili olmayan başka bir öğenin adresi olabilir.

Yüzeysel olarak, hayali öğe çok boyutlu dizilere iyi ölçeklenmez. Çok boyutlu dizileri sıfırdan indekslemek, doğrusal bir adres alanına saf (bitişik) bir dönüşümü (birbiri ardına sistematik olarak değiştirerek), bir indekslemeden daha basit görünmesini sağlar. Örneğin, üç boyutlu diziyi eşlerken doğrusal bir diziye L [M⋅N⋅P], ikisi de M⋅N⋅P elemanlar, dizin r doğrusal dizide belirli bir öğeye erişmek için L [r] = A [z][y][x] sıfır tabanlı indekslemede, yani [0 ≤ x < P], [0 ≤ y < N], [0 ≤ z < M] ve [0 ≤ r < M⋅N⋅P], şu şekilde hesaplanır: r = zMN + yM + x. Tüm dizileri 1 tabanlı indislerle düzenleme ([1 ≤ x ′P], [1 ≤ y ′N], [1 ≤ z ′M], [1 ≤ r ′M⋅N⋅P]) ve elemanların benzer bir düzenlemesini varsayarsak, r ′ = (z ′ − 1)⋅MN + (y ′ − 1)⋅M + (x ′ − 0) tartışmalı bir şekilde daha karmaşık görünen aynı öğeye erişmek için. Elbette, r ' = r + 1, dan beri [z = z ′ – 1], [y = y ′ – 1], ve [x = x ′ – 1]. Basit ve günlük yaşam örneği konumsal gösterim sıfırın icadı mümkün kıldı. Konumsal gösterimde onlar, yüzler, binler ve diğer tüm basamaklar sıfır ile başlar, sadece birimler birde başlar.[9]

  • Sıfırtabanlı endeksler
    x
    y
    012....89
    00001020809
    11011121819
    22021222829
    ..
    ..
    88081828889
    99091929899
    Tablo içeriği dizini temsil eder r
  •    
  • Birtabanlı endeksler
    x '
    y '
    123....910
    10102030910
    21112131920
    32122232930
    ..
    ..
    98182838990
    1091929399100
    Tablo içeriği dizini temsil eder r ′

Bu durum terminolojide bazı karışıklıklara yol açabilir. Sıfır tabanlı bir indeksleme şemasında, birinci eleman "eleman numarası sıfırdır"; benzer şekilde, on ikinci öğe "on bir numaralı öğe" dir. Bu nedenle, sıra sayılarından numaralı nesnelerin miktarına bir benzetme ortaya çıkar; en yüksek indeksi n nesneler olacak n − 1 ve şu anlamına gelir: ninci öğe. Bu nedenle, ilk unsur bazen şu şekilde anılır: sıfırıncı öğe, karışıklığı önlemek için.

Bilim

İçinde matematik, birçok sayı dizisi veya polinomlar negatif olmayan tamsayılar tarafından dizine alınır, örneğin Bernoulli sayıları ve Çan numaraları.

Hem de mekanik ve İstatistik, sıfırıncı an fiziksel olması durumunda toplam kütleyi temsil eden tanımlanmıştır. yoğunluk veya toplam olasılık, yani bir için bir olasılık dağılımı.

termodinamiğin sıfırıncı yasası birinci, ikinci ve üçüncü kanunlardan sonra formüle edildi, ancak daha temel kabul edildi, dolayısıyla adı.

Biyolojide, bir organizmanın "hiçbir şeye niyeti olmadığını" gösteriyorsa, sıfır derece kasıtlı olduğu söylenir. Bu, organizmanın genetik olarak önceden belirlenmiş fenotipinin, genlerini ifade etme "niyetinde" olmadığı için kendisine uygunluk yararı sağladığı bir durumu içerir.[10] Benzer anlamda, bir bilgisayar çalıştırdığı programların kodunu ifade etmeyi "amaçlamadığı" için bu perspektiften sıfır dereceden kasıtlı bir varlık olarak kabul edilebilir.[11]

Biyolojik veya tıbbi deneylerde, herhangi bir deney süresi dolmadan önce yapılan ilk ölçümlerin deneyin 0 gününde olduğu söylenir.

Genomikte, genom koordinatları için hem 0 tabanlı hem de 1 tabanlı sistemler kullanılır.

Hasta sıfır (veya dizin durumu ) baş harftir hasta içinde nüfus örneği bir epidemiyolojik soruşturma.

Diğer alanlar

yıl sıfır yaygın olarak kullanılanlarda mevcut değil Miladi takvim veya selefinde, Jülyen takvimi. Bu sistemler altında yıl MÖ 1 takip ediyor AD 1. Ancak, sıfırıncı yıl vardır. astronomik yıl numaralandırması (Jülyen MÖ 1 yılına denk geldiği yer) ve ISO 8601: 2004 (Milattan önce 1. yıla denk geldiği yerde) ve hepsinde Budist ve Hindu takvimleri.

Birçok ülkede, zemin kat Binalarda, genellikle Amerika Birleşik Devletleri'nde bulunan adlandırma kuralı olan "1. Kat" yerine kat numarası 0 olarak kabul edilir. Bu, negatif sayılarla işaretlenmiş yer altı zeminleriyle tutarlı bir set oluşturur.

0'ın ordinali çoğunlukla matematik, fizik ve bilgisayar bilimiyle doğrudan bağlantılı topluluklarda kullanım bulurken, klasik müzikte de örnekler vardır. Besteci Anton Bruckner erkenden baktı Re minör senfoni Çalışmalarının kanonuna dahil olmaya değmezdi ve skorun ve üst çubuklu bir dairenin üzerine "yaldızlı nicht" yazdı, "geçersiz" anlamına gelmek niyetiyle. Ama ölümünden sonra bu iş şu şekilde bilinmeye başladı: Re minör Senfoni No. 0, aslında daha sonra yazılmış olmasına rağmen Do minör Senfoni No. 1. Daha da erken var Fa minör Senfoni Bruckner'ın bazen denen 00 numara. Rus besteci Alfred Schnittke ayrıca yazdı Senfoni No. 0.

Oxford ve Cambridge dahil olmak üzere bazı üniversitelerde "0. hafta" veya bazen "beşinci hafta", bir dönemdeki derslerin ilk haftasından önceki haftayı ifade eder. Avustralya'da, bazı üniversiteler bunu "O Hafta" olarak adlandırır ve "kelime oyunu" olarak hizmet eder.oryantasyon Haftası ". Buna paralel olarak, üniversite eğitimlerine giriş haftaları İsveç genellikle "sıfırlama" (sıfırlama) olarak adlandırılır.

Birleşik Devletler Hava Kuvvetleri her Çarşamba temel eğitime başlar ve ilk haftanın (sekizinci hafta) bir sonraki Pazar günü başlaması kabul edilir. O Pazar gününden önceki dört gün genellikle "Sıfır Hafta" olarak anılır.

24 saatlik saatler ve uluslararası standart ISO 8601 0'ı günün ilk (sıfırıncı) saatini belirtmek için kullanın.

King's Cross istasyonu Londrada, Edinburgh Haymarket ve içindeki istasyonlar Uppsala, Yonago, Stockport ve Cardiff var Platform 0.

Robert Crumb ilk sayısı için çizimleri Zap Comix çalındı, bu yüzden 1. sayı olarak yayınlanan yepyeni bir sayı çizdi. Daha sonra çalınan sanat eserinin fotokopilerini yeniden imzaladı ve sayı 0 olarak yayınladı.

Brüksel yüzük Belçika'da yol R0 olarak numaralandırılmıştır. Çevresindeki çevre yolundan sonra inşa edilmiştir. Anvers ancak Brüksel (başkent olarak) daha temel bir sayıyı hak ediyordu. Benzer şekilde (tamamlanmamış) yörünge otoyolu Budapeşte Macaristan'da denir M0.

Bazen sıfır kullanılır sokak adreslerinde özellikle sokağın bir tarafında çift sayıların ve diğer tarafında tek sayıların olduğu şemalarda. Önemli bir durum, dönüm noktasıdır Mesih Kilisesi Cambridge açık Cambridge, Massachusetts 's Harvard Meydanı, adresi 0 Garden Street.

Formula 1'de, savunan bir dünya şampiyonu bir sonraki sezonda yarışmazsa, 1 numara hiçbir sürücüye atanmaz, ancak dünya şampiyonu takımının bir sürücüsü 0, diğeri 2 numarayı taşıyacaktır. Hem 1993 hem de 1994'te Damon Hill her iki sezonda da 0 numarayı taşırken, savunma şampiyonu Nigel Mansell 1992'den sonra istifa etti ve savunma şampiyonu Alain Prost 1993'ten sonra istifa etti.

Bir serinin kronolojik bir prequel'i 0 olarak numaralandırılabilir, örneğin Ring 0: Doğum Günü veya Zork Zero.

İsviçre Federal Demiryolları belirli vagon sınıflarını sıfırdan numaralandırın, örneğin, 460 re 000 ile 118 arası.

Kurgu dünyasında Isaac asimov sonunda ona bir Sıfırıncı Yasası ekledi. Üç Robotik Yasası, aslında onları dört kanun yapmak.

Ayrıca bakınız

Referanslar

  1. ^ M. Tohum, Graham (1965). Bilgisayar Grafiklerinde Uygulamalar ile C ++ 'da Nesne Tabanlı Programlamaya Giriş (2. baskı). İngiliz Kütüphanesi: Springer. s. 391. ISBN  1852334509. Alındı 11 Şubat 2020.
  2. ^ Martin Richards (1967). BCPL Referans Kılavuzu (PDF). Massachusetts Teknoloji Enstitüsü. s. 11.
  3. ^ a b c Mike Hoye. "Kaynak belirtilmeli". Alındı 28 Ocak 2014.
  4. ^ Tom Van Vleck (1995). "IBM 7094 ve CTSS". Alındı 28 Ocak 2014.
  5. ^ a b Dijkstra, Edsger Wybe (2 Mayıs 2008). "Numaralandırma neden sıfırdan başlamalı (EWD 831)". E. W. Dijkstra Arşivi. Austin'deki Texas Üniversitesi. Alındı 2011-03-16.
  6. ^ Brown, Jim (Aralık 1978). "0 Endeks Menşeinin Savunmasında". ACM SIGAPL APL Quote Quad. 9 (2): 7. doi:10.1145/586050.586053. S2CID  40187000.
  7. ^ Hui, Roger. "Index Origin 0 bir Engel mi?". jsoftware.com. JSoftware. Alındı 19 Ocak 2015.
  8. ^ Donis Marshall tarafından Microsoft® Visual C # ® 2005 Programlama
  9. ^ Sal Khan. Matematik 1. Sınıf / Sıra Değer / Sayı ızgarası. Khan Academy. Alındı 28 Temmuz 2018. Youtube başlığı: Sayı ızgarası / Sayma / Erken Matematik / Khan Academy
  10. ^ Byrne, Richard W. "Düşünen Maymun: Zekanın Evrimsel Kökenleri". Alındı 2010-05-18.
  11. ^ Dunbar, Robin. "İnsanın Hikayesi - İnsanlığın Evriminin Yeni Tarihi". Alındı 2010-05-18.