โฮมเพจ » ทำอย่างไร » ทำไมคอมพิวเตอร์นับจากศูนย์

    ทำไมคอมพิวเตอร์นับจากศูนย์


    การนับจากศูนย์เป็นวิธีปฏิบัติที่ใช้กันทั่วไปในหลายภาษาของคอมพิวเตอร์ แต่ทำไม อ่านต่อไปเมื่อเราสำรวจปรากฏการณ์และทำไมมันจึงแพร่หลาย.

    เซสชั่นคำถามและคำตอบในวันนี้มาถึงเราด้วยความอนุเคราะห์จาก SuperUser - แผนกย่อยของ Exchange Exchange ซึ่งเป็นกลุ่มที่ขับเคลื่อนด้วยชุมชนของเว็บไซต์ถาม - ตอบ.

    คำถาม

    ผู้อ่าน SuperUser DragonLord อยากรู้ว่าทำไมระบบปฏิบัติการและภาษาโปรแกรมส่วนใหญ่นับจากศูนย์ เขาเขียน:

    คอมพิวเตอร์มักจะมีค่าตัวเลขเริ่มต้นจากศูนย์ ตัวอย่างเช่นอาร์เรย์ในภาษาการเขียนโปรแกรม C-based เริ่มต้นจากดัชนีศูนย์.

    เหตุผลทางประวัติศาสตร์ที่มีอยู่สำหรับเรื่องนี้และสิ่งที่ได้เปรียบในทางปฏิบัตินับจากศูนย์มีมากกว่าการนับจากที่หนึ่ง?

    ทำไมเหรอ? อย่างกว้างขวางเช่นเดียวกับการฝึกปฏิบัติแน่นอนว่ามีเหตุผลเชิงปฏิบัติสำหรับการนำไปปฏิบัติ.

    คำตอบ

    ผู้สนับสนุน SuperUser Matteo เสนอข้อมูลเชิงลึกดังต่อไปนี้:

    การนับอาร์เรย์จาก 0 ช่วยให้การคำนวณที่อยู่หน่วยความจำของแต่ละองค์ประกอบง่ายขึ้น.

    หากอาร์เรย์ถูกเก็บไว้ที่ตำแหน่งที่กำหนดในหน่วยความจำ (เรียกว่าที่อยู่) ตำแหน่งของแต่ละองค์ประกอบสามารถคำนวณได้ดังนี้

    องค์ประกอบ (n) = ที่อยู่ + n * size_of_the_element 

    หากคุณพิจารณาองค์ประกอบแรกเป็นอันดับแรกการคำนวณจะกลายเป็น

    องค์ประกอบ (n) = ที่อยู่ + (n-1) * size_of_the_element 

    ไม่แตกต่างกันมาก แต่เพิ่มการลบที่ไม่จำเป็นสำหรับการเข้าถึงแต่ละครั้ง.

    แก้ไขเพื่อเพิ่ม:

    • การใช้ดัชนีอาร์เรย์เป็นอ็อฟเซ็ตไม่ใช่ข้อกำหนด แต่เป็นเพียงนิสัย ระบบสามารถซ่อนออฟเซ็ตขององค์ประกอบแรกและนำมาพิจารณาเมื่อทำการจัดสรรและอ้างอิงองค์ประกอบ.
    • Dijkstra ตีพิมพ์บทความ“ ทำไมการนับเลขควรเริ่มต้นที่ศูนย์” (pdf) ซึ่งเขาอธิบายว่าทำไมการเริ่มต้นด้วย 0 จึงเป็นทางเลือกที่ดีกว่า การเริ่มต้นที่ศูนย์จะช่วยให้แสดงช่วงได้ดีขึ้น.

    หากคุณต้องการเจาะลึกลงไปในคำตอบกระดาษ Dijkstra เป็นการอ่านที่ให้ข้อมูล.


    มีสิ่งที่จะเพิ่มคำอธิบายหรือไม่ ปิดเสียงในความคิดเห็น ต้องการอ่านคำตอบเพิ่มเติมจากผู้ใช้ Stack Exchange คนอื่นหรือไม่ ลองอ่านหัวข้อสนทนาเต็มได้ที่นี่.