Υπολογιστής μετατροπής βάσης
Μετατρέψτε έναν ακέραιο αριθμό σε δυαδικό, οκταδικό, δεκαδικό και δεκαεξαδικό.
Πώς να χρησιμοποιήσετε αυτόν τον υπολογιστή μετατροπής βάσης
- Εισαγάγετε τον ακέραιο αριθμό
Πληκτρολογήστε έναν μη αρνητικό ακέραιο στο πεδίο «Ακέραιος αριθμός» (π.χ. 255 ή 4096).
- Δείτε τη δυαδική τιμή
Το αποτέλεσμα της δυαδικής τιμής δείχνει την αναπαράσταση με βάση το 2.
- Ελέγξτε το οκταδικό και το δεκαεξαδικό
Δείτε τα οκταδικά και δεκαεξαδικά αποτελέσματα για συμπαγείς αναπαραστάσεις.
- Επαληθεύστε το δεκαδικό
Η δεκαδική έξοδος επιβεβαιώνει την αρχική τιμή για διασταύρωση.
Πώς λειτουργεί αυτός ο υπολογιστής μετατροπής βάσης
Αυτός ο υπολογιστής μετατροπής βάσης λαμβάνει έναν ακέραιο αριθμό στο δεκαδικό σύστημα (βάση 10) και τον αναπαριστά στο δυαδικό (βάση 2), οκταδικό (βάση 8) και δεκαεξαδικό (βάση 16) — τα τέσσερα αριθμητικά συστήματα που χρησιμοποιούνται συχνότερα στην πληροφορική. Κάθε θεσιακό σύστημα αρίθμησης λειτουργεί με τον ίδιο τρόπο: κάθε θέση ψηφίου αντιπροσωπεύει μια διαδοχική δύναμη της βάσης και η τιμή του αριθμού είναι το άθροισμα κάθε ψηφίου πολλαπλασιαζόμενο με το θεσιακό του βάρος. Η μετατροπή μεταξύ βάσεων είναι μια θεμελιώδης λειτουργία στον προγραμματισμό χαμηλού επιπέδου, στη σχεδίαση ψηφιακής λογικής, στη μηχανική δικτύων (διευθύνσεις MAC και IPv6), στους κωδικούς χρωμάτων σε CSS, στις μάσκες δικαιωμάτων αρχείων στο Unix και στην επιθεώρηση διευθύνσεων μνήμης κατά την αποσφαλμάτωση.
Επαναλαμβανόμενη διαίρεση: διαιρέστε το N με τη βάση-στόχο R, καταγράψτε το υπόλοιπο, επαναλάβετε με το πηλίκο μέχρι να φτάσει στο 0, και στη συνέχεια διαβάστε τα υπόλοιπα με αντίστροφη σειρά Μετατρέψτε τον δεκαδικό αριθμό 255 σε δυαδικό, οκταδικό και δεκαεξαδικό. Για το δυαδικό (R = 2): 255 ÷ 2 = 127 υπόλοιπο 1, 127 ÷ 2 = 63 Υ 1, 63 ÷ 2 = 31 Υ 1, 31 ÷ 2 = 15 Υ 1, 15 ÷ 2 = 7 Υ 1, 7 ÷ 2 = 3 Υ 1, 3 ÷ 2 = 1 Υ 1, 1 ÷ 2 = 0 Υ 1. Διαβάζοντας τα υπόλοιπα από κάτω προς τα πάνω: 11111111. Για το οκταδικό (R = 8): 255 ÷ 8 = 31 Υ 7, 31 ÷ 8 = 3 Υ 7, 3 ÷ 8 = 0 Υ 3 → 377. Για το δεκαεξαδικό (R = 16): 255 ÷ 16 = 15 Υ 15 (F), 15 ÷ 16 = 0 Υ 15 (F) → FF.
Δεκαδικό 4096 → δυαδικό 1000000000000, οκταδικό 10000, δεκαεξαδικό 1000. Χρήσιμο για την κατανόηση του 4 KiB = 4096 bytes.
Δεκαδικό 15 → δυαδικό 1111, οκταδικό 17, δεκαεξαδικό F. Κάθε δεκαεξαδικό ψηφίο αντιστοιχεί σε ακριβώς τέσσερα bit. F = 1111.
- ✓ Η είσοδος είναι ένας μη αρνητικός ακέραιος αριθμός (μηδέν ή θετικός ακέραιος). Οι κλασματικές τιμές και οι αρνητικοί αριθμοί απαιτούν εκτεταμένους αλγορίθμους (π.χ. συμπλήρωμα ως προς δύο για προσημασμένο δυαδικό) που βρίσκονται εκτός του πεδίου αυτού του εργαλείου.
- ✓ Τα δεκαεξαδικά ψηφία πάνω από το 9 αναπαρίστανται με κεφαλαία γράμματα A–F, ακολουθώντας τη σύμβαση στις περισσότερες γλώσσες προγραμματισμού, τα RFC και την τεκμηρίωση υλικού.
- ✓ Τα μηδενικά στην αρχή παραλείπονται από το αποτέλεσμα. Για αναπαραστάσεις σταθερού πλάτους (π.χ. δυαδικό 8-bit ή 32-bit), συμπληρώστε το αποτέλεσμα χειροκίνητα στο επιθυμητό πλάτος.
- ✓ Ο υπολογιστής δέχεται μόνο μη αρνητικούς ακέραιους αριθμούς. Τιμές πάνω από 2^53 − 1 (Number.MAX_SAFE_INTEGER της JavaScript) απορρίπτονται ώστε τα εμφανιζόμενα ψηφία να παραμένουν ακριβή.
- Κάθε δεκαεξαδικό ψηφίο αντιστοιχεί σε ακριβώς τέσσερα δυαδικά ψηφία (bits) και κάθε οκταδικό ψηφίο αντιστοιχεί σε ακριβώς τρία bits. Αυτή η σχέση καθιστά τη νοητική μετατροπή μεταξύ δεκαεξαδικού, οκταδικού και δυαδικού γρήγορη μόλις απομνημονεύσετε τα 16 μοτίβα nibble.
- Κοινές τιμές που αξίζει να απομνημονεύσετε: 0xFF = 255, 0x100 = 256, 0xFFFF = 65.535, 0xFFFFFFFF = 4.294.967.295 (ο μέγιστος μη προσημασμένος ακέραιος 32-bit).
- Τα δικαιώματα αρχείων Unix χρησιμοποιούν το οκταδικό σύστημα: το 755 σημαίνει rwxr-xr-x (ανάγνωση/εγγραφή/εκτέλεση ιδιοκτήτη, ανάγνωση/εκτέλεση ομάδας και άλλων). Κάθε οκταδικό ψηφίο κωδικοποιεί τρία bit δικαιωμάτων.
- Οι δεκαεξαδικοί κώδικες χρωμάτων CSS είναι τρεις διαδοχικές δεκαεξαδικές τιμές byte που αντιπροσωπεύουν τα κανάλια κόκκινου, πράσινου και μπλε — π.χ., το #FF8800 είναι 255 κόκκινο, 136 πράσινο, 0 μπλε.
- Θεωρία θεσιακών συστημάτων αρίθμησης — Knuth, D. E., The Art of Computer Programming, Τόμος 2: Seminumerical Algorithms, Ενότητα 4.1
- IEEE 754-2019 — Πρότυπο για Αριθμητική Κινητής Υποδιαστολής (πλαίσιο αναπαράστασης ακεραίων)
- RFC 4291 — Αρχιτεκτονική Διευθυνσιοδότησης IP Έκδοσης 6 (δεκαεξαδική σημειογραφία για IPv6)
Κατανόηση των αριθμητικών συστημάτων στην πληροφορική
Κάθε θεσιακό σύστημα αρίθμησης χρησιμοποιεί μια βάση (radix) και αναθέτει σε κάθε ψηφίο ένα βάρος ανάλογα με τη θέση του. Στο δεκαδικό (βάση 10), το δεξιότερο ψηφίο είναι οι μονάδες, το επόμενο οι δεκάδες, μετά οι εκατοντάδες. Το δυαδικό (βάση 2) χρησιμοποιεί μόνο 0 και 1, αντιστοιχώντας απευθείας στις καταστάσεις on/off των τρανζίστορ. Το οκταδικό (βάση 8) ομαδοποιεί τρία bit ανά ψηφίο και το δεκαεξαδικό (βάση 16) ομαδοποιεί τέσσερα bit ανά ψηφίο, χρησιμοποιώντας τα A–F για τις τιμές 10–15. Η μετατροπή μεταξύ βάσεων χρησιμοποιεί επαναλαμβανόμενη διαίρεση: διαιρέστε τον αριθμό με τη βάση-στόχο, καταγράψτε το υπόλοιπο, επαναλάβετε με το πηλίκο μέχρι να μηδενιστεί και, στη συνέχεια, διαβάστε τα υπόλοιπα με αντίστροφη σειρά. Αυτός ο αλγόριθμος αποτελεί τη βάση για κάθε μετατροπή βάσης στον προγραμματισμό.
Πρακτικές περιπτώσεις χρήσης μετατροπής βάσης για προγραμματιστές
Οι προγραμματιστές χρησιμοποιούν τη μετατροπή βάσης κατά την εξέταση αποτυπωμάτων μνήμης (memory dumps), την αποσφαλμάτωση bitwise λειτουργιών, την ερμηνεία δικαιωμάτων αρχείων και την εργασία με κωδικούς χρωμάτων. Τα δικαιώματα αρχείων Unix (π.χ. 755) είναι οκταδικά: κάθε ψηφίο κωδικοποιεί την ανάγνωση/εγγραφή/εκτέλεση για τον ιδιοκτήτη, την ομάδα και τους άλλους. Τα χρώματα CSS hex όπως το #FF8800 είναι τρία συνενωμένα byte σε δεκαεξαδική μορφή. Οι διευθύνσεις IPv6 γράφονται σε δεκαεξαδική μορφή. Οι μάσκες bit (bitmasks) και οι σημαίες (flags) εκφράζονται συχνά σε δεκαεξαδική μορφή για αναγνωσιμότητα (0xFF για μάσκα byte, 0xFFFF για 16 bits). Κατά την αποσφαλμάτωση κώδικα χαμηλού επιπέδου ή πρωτοκόλλων δικτύου, η μετατροπή μεταξύ δεκαδικού, δεκαεξαδικού και δυαδικού αποκαλύπτει γρήγορα τα υποκείμενα μοτίβα bit.
Συχνές ερωτήσεις υπολογιστή μετατροπής βάσης
Γιατί χρησιμοποιούνται το δυαδικό, το οκταδικό και το δεκαεξαδικό σύστημα στην πληροφορική;
Το δυαδικό σύστημα αντιστοιχεί απευθείας στις καταστάσεις on/off των τρανζίστορ, καθιστώντας το τη φυσική γλώσσα του υλικού. Το οκταδικό και το δεκαεξαδικό είναι συμπαγείς συντομογραφίες του δυαδικού — ένα δεκαεξαδικό ψηφίο αντιπροσωπεύει ακριβώς τέσσερα bit και ένα οκταδικό ψηφίο τρία bit — έτσι οι προγραμματιστές τα χρησιμοποιούν για να εκφράσουν διευθύνσεις, μάσκες bit και κώδικες χρωμάτων πιο συνοπτικά από τις μεγάλες δυαδικές συμβολοσειρές.
Πώς μπορώ να κάνω μετατροπή προς την αντίθετη κατεύθυνση (π.χ. από δεκαεξαδικό σε δεκαδικό);
Πολλαπλασιάστε κάθε ψηφίο με τη θεσιακή δύναμη της βάσης του και αθροίστε τα αποτελέσματα. Για παράδειγμα, το δεκαεξαδικό 1A3 = 1×16² + 10×16¹ + 3×16⁰ = 256 + 160 + 3 = 419 στο δεκαδικό σύστημα.
Τι συμβαίνει με τους πολύ μεγάλους αριθμούς;
Ο υπολογιστής δέχεται τιμές μόνο μέχρι το όριο ασφαλούς ακεραίου της JavaScript: 2^53 − 1 (9.007.199.254.740.991). Μεγαλύτεροι αριθμοί απορρίπτονται επειδή μπορεί να χάσουν τα λιγότερο σημαντικά ψηφία στο πρόγραμμα περιήγησης.
Μπορώ να μετατρέψω αρνητικούς αριθμούς ή κλάσματα;
Αυτό το εργαλείο διαχειρίζεται μη αρνητικούς ακέραιους αριθμούς. Οι αρνητικοί ακέραιοι στον προγραμματισμό συνήθως αναπαρίστανται με τη χρήση συμπληρώματος ως προς δύο σε σταθερό εύρος bit, και οι κλασματικές τιμές χρησιμοποιούν την κωδικοποίηση κινητής υποδιαστολής IEEE 754 — και τα δύο απαιτούν πρόσθετες παραμέτρους που αυτός ο υπολογιστής δεν συλλέγει.
Γιατί το πρόθεμα 0x εμφανίζεται στον κώδικα αλλά όχι στο αποτέλεσμα;
Το πρόθεμα 0x (και το 0b για το δυαδικό, το 0o για το οκταδικό) είναι μια σύνταξη σταθερών τιμών ειδική για κάθε γλώσσα που ενημερώνει τον μεταγλωττιστή ή τον διερμηνέα για τη βάση που πρέπει να αναμένει. Ο υπολογιστής εξάγει τη συμβολοσειρά των ψηφίων χωρίς πρόθεμα, ώστε να μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πλαίσιο.