17Aug

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


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

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

השאלה

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

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

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

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

תשובה

SuperUser תורם Matteo מציעה את התובנות הבאות:

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

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

( n) = address + n * size_of_the_element

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

( n) = כתובת +( n-1) * size_of_the_element

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

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

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

אם אתם מחפשים להעמק עמוק יותר לתוך התשובה, נייר Dijkstra הוא קריאה אינפורמטיבי.

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