17Aug
Η μέτρηση από το μηδέν είναι μια πολύ κοινή πρακτική σε πολλές γλώσσες υπολογιστών, αλλά γιατί;Διαβάστε παρακάτω καθώς εξερευνούμε το φαινόμενο και γιατί είναι τόσο διαδεδομένο.
Η σημερινή ερώτηση &Η συνάντηση απαντήσεων έρχεται με την ευγένεια του SuperUser - μια υποδιαίρεση του Stack Exchange, μια κοινότητα-καθοδηγούμενη ομαδοποίηση Q & A ιστοσελίδες.
Η ερώτηση
SuperUser αναγνώστης DragonLord είναι περίεργος γιατί τα περισσότερα λειτουργικά συστήματα και γλώσσες προγραμματισμού μετράνε από το μηδέν.Γράφει: Οι υπολογιστές
παραδοσιακά αντιστοιχούν σε αριθμητικές τιμές που αρχίζουν από το μηδέν.Για παράδειγμα, συστοιχίες σε γλώσσες προγραμματισμού που βασίζονται σε C ξεκινούν από μηδενικό δείκτη.
Ποιοι είναι οι ιστορικοί λόγοι γι 'αυτό, και ποια πρακτικά πλεονεκτήματα μετράνε από το μηδέν πάνω από την καταμέτρηση από το ένα;
Γιατί πράγματι;Όπως είναι ευρέως διαδεδομένη ως πρακτική, υπάρχουν ασφαλώς πρακτικοί λόγοι για την εφαρμογή της.
Ο συνεργάτης απαντήσεων
SuperUser Matteo προσφέρει τις ακόλουθες πληροφορίες:
Η καταμέτρηση των συστοιχιών από το 0 απλοποιεί τον υπολογισμό της διεύθυνσης μνήμης κάθε στοιχείου.
Εάν ένας πίνακας αποθηκεύεται σε μια δεδομένη θέση στη μνήμη( ονομάζεται διεύθυνση), η θέση κάθε στοιχείου μπορεί να υπολογιστεί ως στοιχείο
( n) = διεύθυνση + n * μέγεθος_της_στοιχείουΑν θεωρήσετε το πρώτο στοιχείο το πρώτο,γίνεται στοιχείο
( n) = διεύθυνση +( n-1) * size_of_the_elementΔεν είναι τεράστια διαφορά, αλλά προσθέτει περιττή αφαίρεση για κάθε πρόσβαση.
Επεξεργασία για να προσθέσετε:
- Η χρήση του δείκτη πίνακα ως αντιστάθμιση δεν είναι απαίτηση, αλλά απλώς μια συνήθεια.Η μετατόπιση του πρώτου στοιχείου θα μπορούσε να κρυφτεί από το σύστημα και να ληφθεί υπόψη κατά την κατανομή και την αναφορά στοιχείων.Το
- Dijkstra δημοσίευσε ένα έγγραφο "Γιατί η αρίθμηση πρέπει να ξεκινά από το μηδέν"( pdf) όπου εξηγεί γιατί η αρχή με το 0 είναι μια καλύτερη επιλογή.Αρχίζοντας από το μηδέν επιτρέπει μια καλύτερη αντιπροσώπευση των περιοχών.
Αν ψάχνετε να εμβαθύνετε στην απάντηση, το χαρτί Dijkstra είναι μια ενημερωτική ανάγνωση.
Έχετε κάτι να προσθέσετε στην εξήγηση;Απενεργοποιήστε τα σχόλια.Θέλετε να διαβάσετε περισσότερες απαντήσεις από άλλους χρήστες τεχνολογίας Stack Exchange;Δείτε το πλήρες νήμα συζήτησης εδώ.