דף הבית » איך ל » למה מחשבים לספור אפס?

    למה מחשבים לספור אפס?


    ספירה מאפס היא נוהג נפוץ מאוד בשפות מחשב רבות, אבל למה? המשך לקרוא כפי שאנו לחקור את התופעה ומדוע היא נפוצה כל כך.

    מפגש השאלות והתשובות של היום מגיע אלינו באדיבות SuperUser - חלוקה מחודשת של Stack Exchange, קיבוץ מונחה על ידי הקהילה של אתרי אינטרנט של Q & A.

    השאלה

    SuperUser הקורא DragonLord הוא סקרן לגבי למה רוב מערכות ההפעלה שפות תכנות לספור מאפס. הוא כותב:

    מחשבים מסודרים באופן מסורתי ערכים מספריים החל מאפס. לדוגמה, מערכים בשפות תכנות מבוססות C מתחילים מאפס אינדקס.

    מה הסיבות ההיסטוריות הקיימות על זה, ומה היתרונות המעשיים לספור מאפס יש מעל לספור מאחד?

    למה באמת? כפי נפוץ בפועל, אין ספק יש סיבות מעשיות ליישום שלה.

    התשובה

    משתתף SuperUser Matteo מציע את התובנות הבאות:

    ספירת מערכים מ -0 מפשט את חישוב כתובת הזיכרון של כל אלמנט.

    אם מערך מאוחסן במיקום נתון בזיכרון (הוא נקרא כתובת) המיקום של כל רכיב יכול להיות מחושב כמו

    אלמנט (n) = כתובת + n * size_of_the_element 

    אם אתה מחשיב את האלמנט הראשון הראשון, החישוב הופך

    אלמנט (n) = כתובת + (n-1) * size_of_the_element 

    לא הבדל עצום אבל זה מוסיף חיסור מיותר עבור כל גישה.

    נערך כדי להוסיף:

    • השימוש במדד המערך כקיזוז אינו דרישה, אלא רק הרגל. קיזוז האלמנט הראשון יכול להיות מוסתר על ידי המערכת ונלקח בחשבון בעת ​​הקצאת והפניה אלמנט.
    • Dijkstra פרסם מאמר "למה מספור צריך להתחיל באפס" (pdf) שם הוא מסביר מדוע להתחיל עם 0 היא בחירה טובה יותר. החל מאפס מאפשר ייצוג טוב יותר של טווחים.

    אם אתה מסתכל כדי להעמיק את התשובה, את הנייר Dijkstra הוא אינפורמטיבי לקרוא.


    יש לך משהו להוסיף להסבר? נשמע את ההערות. רוצה לקרוא תשובות נוספות ממשתמשים אחרים בעלי ידע טכנולוגי מתמצא? בדוק את נושא הדיון המלא כאן.