Πίνακας περιεχομένων:
- δεκαδικοί αριθμοί
- σύστημα θα είχε λειτουργήσει εξίσου καλά:
- αναφέρεται σε ένα πολλαπλάσιο των δέκα, ένα δυαδικό ψηφίο καλείται bit
Βίντεο: Week 0 2024
Οι μεταβλητές C ++ αποθηκεύονται εσωτερικά ως λεγόμενοι δυαδικοί αριθμοί. Οι δυαδικοί αριθμοί αποθηκεύονται ως ακολουθία τιμών 1 και 0 γνωστών ως bits. Τις περισσότερες φορές, δεν χρειάζεται πραγματικά να ασχοληθείς με αριθμούς σε επίπεδο bit? Ωστόσο, υπάρχουν περιπτώσεις κατά τις οποίες αυτό είναι βολικό. Το C ++ παρέχει ένα σύνολο χειριστών για αυτό το σκοπό.
Οι λεγόμενοι bitwise logic operators λειτουργούν στα επιχειρήματά τους σε επίπεδο bit. Για να κατανοήσουν πώς λειτουργούν, εξετάστε πώς οι υπολογιστές αποθηκεύουν μεταβλητές.
δεκαδικοί αριθμοί
επειδή βασίζονται στον αριθμό 10. Γενικά, ο προγραμματιστής εκφράζει το C ++ μεταβλητών ως δεκαδικοί αριθμοί. Έτσι, θα λέγατε ότι η τιμή var είναι 123, για παράδειγμα. Ένας αριθμός όπως ο αριθμός 123 αναφέρεται σε 1 * 100 + 2 * 10 + 3 * 1
. Κάθε ένας από αυτούς τους αριθμούς βάσης - 100, 10 και 1 - είναι μια δύναμη 10. 123 = 1 * 100 + 2 * 10 + 3 * 1
Εκφράζεται με ελαφρώς διαφορετικό αλλά ισοδύναμο τρόπο:123 = 1 * 10
2 <10
1 + 3 * 10 0 Να θυμάσαι ότι οποιοσδήποτε αριθμός με μηδενική ισχύ είναι 1. το σύστημα καταμέτρησης πηγάζει, κατά πάσα πιθανότητα, από το γεγονός ότι οι άνθρωποι έχουν 10 δάχτυλα, τα αρχικά εργαλεία μέτρησης. Η εναλλακτική λύση θα ήταν η βάση 20.
οκταδικό
σύστημα θα είχε λειτουργήσει εξίσου καλά:
123
10= 1 * 8 2 + 7 * 8
Οι μικρές 10 και 8 εδώ αναφέρονται στο σύστημα αρίθμησης, 10 για δεκαδικό (βάση 10) και 8 για οκταδικό (βάση 8). Ένα σύστημα καταμέτρησης μπορεί να χρησιμοποιεί οποιαδήποτε θετική βάση. Το σύστημα δυαδικών αριθμών Οι υπολογιστές έχουν ουσιαστικά δύο δάχτυλα. (Ίσως αυτός είναι ο λόγος για τον οποίο οι υπολογιστές είναι τόσο ηλίθιοι: χωρίς έναν αντίθετο αντίχειρα, δεν μπορούν να πιάσουν τίποτα και στη συνέχεια, ίσως όχι.) Οι υπολογιστές προτιμούν να μετράνε χρησιμοποιώντας τη βάση 2. Ο αριθμός 123 10 123 10 = 0 * 128 + 1 * 64 + 1 * 32 + 1 * 16 + 1 * 8 + 0 * 2 Είναι πάντα συμβατικό να εκφράζουμε δυαδικούς αριθμούς χρησιμοποιώντας 4, 8, 32 ή 64 δυαδικά ψηφία ακόμη και αν τα πρώτα ψηφία είναι μηδέν. Αυτό οφείλεται επίσης στον τρόπο με τον οποίο κατασκευάζονται εσωτερικά υπολογιστές. Επειδή ο όρος
ψηφίο
αναφέρεται σε ένα πολλαπλάσιο των δέκα, ένα δυαδικό ψηφίο καλείται bit
. Ο όρος προέρχεται από δυαδικό (β-) ψηφίο (-it).Οκτώ κομμάτια αποτελούν ένα byte. Μια λέξη είναι συνήθως δύο ή τέσσερα byte. Με μια τόσο μικρή βάση, είναι απαραίτητο να χρησιμοποιήσουμε ένα μεγάλο αριθμό bits για να εκφράσουμε αριθμούς. Είναι ακατάλληλο να χρησιμοποιήσετε μια έκφραση όπως το 01111011
2 για να εκφράσετε μια τέτοια κοσμική τιμή όπως 123 10
. Οι προγραμματιστές προτιμούν να εκφράζουν αριθμούς ανά μονάδες bytes ή οκτώ bits. Ένα μοναδικό ψηφίο τεσσάρων δυαδικών ψηφίων είναι ουσιαστικά η βάση 16, επειδή τα τέσσερα δυαδικά ψηφία μπορούν να εκφράσουν οποιαδήποτε τιμή από το 0 έως το 15. Η βάση 16 είναι γνωστή ως το σύστημα μέτρησης
δεκαεξαδικό
. Το δεκαεξαδικό είναι συχνά συμβεβλημένο με απλά hex. Το δεκαεξαδικό χρησιμοποιεί τα ίδια ψηφία για τους αριθμούς 0 έως 9. Για τα ψηφία μεταξύ 9 και 16, το δεκαεξαδικό χρησιμοποιεί τα πρώτα έξι γράμματα του αλφαβήτου: A για 10, B για 11 κ.ο.κ. Έτσι, 123 10 γίνεται 7Β
16 . 123 = 7 * 16 1 + B (δηλαδή 11) * 16
0 = 7B 16 , 32 ή 64 bits, προτιμούν να εκφράζουν δεκαεξαδικούς αριθμούς σε 1, 2, 4 ή 8 δεκαεξαδικά ψηφία ακόμη και όταν τα αρχικά ψηφία είναι 0.
Τέλος, είναι άβολα η έκφραση δεκαεξαδικού αριθμού όπως 7B < 16 χρησιμοποιώντας έναν δείκτη, επειδή τα τερματικά δεν υποστηρίζουν τους δείκτες. Ακόμη και σε έναν επεξεργαστή κειμένου, είναι ενοχλητικό να αλλάζετε τις γραμματοσειρές από και προς την κατάσταση υποδείγματος μόνο για να πληκτρολογήσετε δύο ψηφία. Επομένως, οι προγραμματιστές χρησιμοποιούν την αρχή της ένα δεκαεξαδικό αριθμό με 0x (ο λόγος για μια τόσο περίεργη πεποίθηση πηγαίνει πίσω στις πρώτες ημέρες του C). Έτσι, το 7Β γίνεται 0x7B. Χρησιμοποιώντας αυτή τη σύμβαση, το 0x7B είναι ίσο με 123 (ενώ το 0x123 ισούται με το 291.) Όλοι οι μαθηματικοί χειριστές μπορούν να εκτελούνται σε δεκαεξαδικούς αριθμούς με τον ίδιο τρόπο που εφαρμόζονται σε δεκαδικούς αριθμούς. Ο λόγος που δεν μπορούμε να επιτύχουμε έναν πολλαπλασιασμό όπως το 0xC * 0xE στα κεφάλια μας έχει να κάνει περισσότερο με τους πίνακες πολλαπλασιασμού που μάθαμε στο σχολείο παρά με οποιονδήποτε περιορισμό στο σύστημα αριθμών.