Μετατροπέας Αριθμητικών Συστημάτων: BIN/HEX/DEC/OCT & Αρνητικοί Αριθμοί
Ο κόσμος των υπολογιστών λειτουργεί με μηδέν και ένα, αλλά οι άνθρωποι σκέφτονται σε δεκάδες. Και οι προγραμματιστές; Πρέπει να κατανοούν τα πάντα ενδιάμεσα. Είτε κάνετε αποσφαλμάτωση κώδικα χαμηλού επιπέδου, είτε ρυθμίζετε χρώματα σε CSS, είτε υπολογίζετε μάσκες IP, είτε επιλύετε εργασίες πληροφορικής, θα συναντήσετε την ανάγκη μετατροπής αριθμών μεταξύ συστημάτων.
Οι συνηθισμένες αριθμομηχανές των Windows ή του κινητού είναι συχνά αργές και αδέξιες. Ο έξυπνος μετατροπέας αριθμητικών συστημάτων μας σχεδιάστηκε από προγραμματιστές για προγραμματιστές. Προσφέρει άμεση μετατροπή σε πραγματικό χρόνο, υποστήριξη για εξαιρετικά μεγάλους αριθμούς και, ως ένα από τα λίγα online εργαλεία, χειρίζεται σωστά τους αρνητικούς αριθμούς σε δυαδική μορφή.
Τι μπορεί να κάνει αυτός ο μετατροπέας αριθμητικών συστημάτων;
Κατά την ανάπτυξη αυτού του widget, επικεντρωθήκαμε στην επίλυση των πιο συχνών προβλημάτων των προγραμματιστών:
- Ανταπόκριση σε πραγματικό χρόνο: Κανένα κουμπί “Υπολογισμός”. Ξεκινήστε να πληκτρολογείτε στο πεδίο HEX και δείτε αμέσως πώς αλλάζουν τα BIN και DEC.
- Υποστήριξη αρνητικών αριθμών (Signed Integers): Οι περισσότεροι online μετατροπείς αποτυγχάνουν όταν πληκτρολογείτε
-5. Εμείς όχι. Χάρη στην επιλογή βάθους bit (8, 16, 32, 64 bit), προσομοιώνουμε την ακριβή συμπεριφορά του επεξεργαστή χρησιμοποιώντας το συμπλήρωμα ως προς δύο. - Αναγνωσιμότητα δυαδικού κώδικα: Το να κοιτάτε το
1110101011011110είναι κουραστικό. Το εργαλείο μας μπορεί να μορφοποιήσει αυτόματα την έξοδο σε 4 bit (nibbles) σε1110 1010 1101 1110, μειώνοντας δραστικά τα λάθη κατά την αντιγραφή. - Υποστήριξη BigInt: Χρειάζεστε να μετατρέψετε έναν αριθμό 64-bit ή ένα hash; Το τυπικό JavaScript σταματά στον αριθμό $2^{53}$. Η μηχανή μας μπορεί να χειριστεί αριθμούς οποιουδήποτε μήκους σε λειτουργία “Μόνο θετικά”.
Οδηγός αριθμητικών συστημάτων: Πότε να χρησιμοποιήσετε το καθένα;
1. Δεκαδικό σύστημα (DEC - Decimal)
- Βάση: 10 (ψηφία 0-9)
- Χρήση: Καθημερινή ζωή, οικονομικά, μέτρηση βρόχων στον κώδικα.
- Ενδιαφέρον: Οι υπολογιστές δεν το κατανοούν, πρέπει να το μετατρέψουν σε δυαδικό.
2. Δυαδικό σύστημα (BIN - Binary)
- Βάση: 2 (ψηφία 0, 1)
- Χρήση: Κώδικας μηχανής, λογικές πύλες, μάσκες IP.
- Συμβουλή: Κάθε ψηφίο αντιπροσωπεύει ένα bit. 8 bit αποτελούν 1 byte.
3. Δεκαεξαδικό σύστημα (HEX - Hexadecimal)
- Βάση: 16 (ψηφία 0-9, γράμματα A-F)
- Χρήση: Συμπαγής αναπαράσταση δυαδικού κώδικα. Ένας χαρακτήρας HEX αντιπροσωπεύει ακριβώς 4 bit (nibble). Δύο χαρακτήρες (π.χ.
FF) αντιπροσωπεύουν ένα ολόκληρο byte. - Παραδείγματα:
- Χρώματα στον ιστό:
#FF5733(Κόκκινο, Πράσινο, Μπλε). - Διευθύνσεις MAC:
00:1A:2B:3C:4D:5E. - Αποτυπώσεις μνήμης (Memory dumps).
- Χρώματα στον ιστό:
4. Οκταδικό σύστημα (OCT - Octal)
- Βάση: 8 (ψηφία 0-7)
- Χρήση: Ιστορικά παλαιότεροι υπολογιστές, σήμερα κυρίως δικαιώματα Linux (chmod).
- Παράδειγμα: Η εντολή
chmod 755ορίζει τα δικαιώματα rwx-rx-rx (ανάγνωση, εγγραφή, εκτέλεση).
Πώς να εργάζεστε σωστά με αρνητικούς αριθμούς;
Αυτή είναι η πιο προηγμένη λειτουργία του μετατροπέα μας. Στη μνήμη του υπολογιστή, δεν υπάρχει σύμβολο “μείον”. Για να αποθηκεύσει έναν αρνητικό αριθμό, ο υπολογιστής χρησιμοποιεί συχνότερα τη μέθοδος του συμπληρώματος ως προς δύο (Two’s Complement).
Το αποτέλεσμα της μετατροπής ενός αρνητικού αριθμού εξαρτάται από το πόσα bit έχει δεσμευμένα η μεταβλητή. Γι’ αυτό, στην επάνω γραμμή θα βρείτε τον διακόπτη Βάθος Bit.
Παράδειγμα: Πώς φαίνεται ο αριθμός -5;
Δοκιμάστε το μόνοι σας στον μετατροπέα μας:
-
Ορίστε το βάθος σε 8-bit.
- Εισάγετε στο DEC:
-5. - Αποτέλεσμα HEX:
FB. - Αποτέλεσμα BIN:
1111 1011. - Εξήγηση: $256 - 5 = 251$ (το οποίο είναι FB).
- Εισάγετε στο DEC:
-
Ορίστε το βάθος σε 16-bit.
- Εισάγετε στο DEC:
-5. - Αποτέλεσμα HEX:
FFFB. - Εξήγηση: Επειδή έχουμε περισσότερο χώρο, οι “άσοι” συμπληρώνουν τον υπόλοιπο χώρο αριστερά.
- Εισάγετε στο DEC:
-
Ορίστε το βάθος σε Μόνο θετικά (Unsigned).
- Αν εισάγετε
-5, το πεδίο θα κοκκινίσει. Αυτή η λειτουργία δεν υποστηρίζει αρνητικούς αριθμούς, καθώς θα απαιτούσε άπειρους άσους.
- Αν εισάγετε
Επαγγελματική συμβουλή: Εάν εργάζεστε με χρώματα ή διευθύνσεις IP, χρησιμοποιείτε πάντα τη λειτουργία “Μόνο θετικά”. Εάν κάνετε εργασίες σε C/C++ ή assembler, μεταβείτε σε 32-bit ή 64-bit.
Πίνακας γρήγορων μετατροπών (Cheat Sheet)
Για γρήγορο προσανατολισμό, παραθέτουμε τις βασικές τιμές που πρέπει να γνωρίζει κάθε “ITάς” απ’ έξω.
| Δεκαδικό (DEC) | Δεκαεξαδικό (HEX) | Δυαδικό (BIN) | Σημείωση |
|---|---|---|---|
| 0 | 00 | 0000 | Μηδέν |
| 1 | 01 | 0001 | |
| 10 | 0A | 1010 | |
| 15 | 0F | 1111 | Μέγιστη τιμή 4 bit (Nibble) |
| 16 | 10 | 0001 0000 | |
| 127 | 7F | 0111 1111 | Μέγιστη τιμή για signed 8-bit (char) |
| 255 | FF | 1111 1111 | Μέγιστη τιμή για unsigned 8-bit (byte) |
| 65 535 | FFFF | … | Μέγιστη τιμή για 16-bit |
Συχνές Ερωτήσεις (FAQ)
Τι σημαίνει "Bit Depth" (Βάθος Bit);
Καθορίζει πόση μνήμη έχουμε δεσμεύσει για έναν αριθμό.- 8-bit: Τιμές 0 έως 255 (ή -128 έως 127). Αντιστοιχεί στον τύπο
charήbyte. - 16-bit: Τιμές έως 65 535. Αντιστοιχεί στον τύπο
short. - 32-bit: Το τυπικό
intσε σύγχρονες γλώσσες. - 64-bit: Για πολύ μεγάλους αριθμούς (
long long,BigInt).
Γιατί ο αριθμός 255 στο HEX γράφεται ως FF;
Το δεκαεξαδικό σύστημα έχει 16 ψηφία (0-9 και A-F), όπου το F έχει τιμή 15. Ο αριθμόςFF υπολογίζεται ως: $(15 \times 16^1) + (15 \times 16^0) = 240 + 15 = 255$.
Πώς μετατρέπω ένα χρώμα HEX σε RGB;
Ένα χρώμα στον ιστό, π.χ.#E05412, αποτελείται από τρία byte: Κόκκινο (E0), Πράσινο (54), Μπλε (12).
Εισάγετε "E0" στον μετατροπέα μας στο πεδίο HEX -> θα λάβετε 224.
Εισάγετε "54" -> θα λάβετε 84.
Εισάγετε "12" -> θα λάβετε 18.
Το αποτέλεσμα είναι rgb(224, 84, 18).
Τι σημαίνει το πρόθεμα 0x, 0b ή 0o;
Για να διακρίνουν τα συστήματα οι προγραμματιστές, χρησιμοποιούνται προθέματα:0x= Δεκαεξαδικό (π.χ. 0xFF)0b= Δυαδικό (π.χ. 0b101)0o= Οκταδικό (π.χ. 0o755)
Γιατί το πεδίο κοκκίνισε;
Αυτή είναι μια λειτουργία επικύρωσης εισόδου. Σημαίνει ότι εισαγάγατε έναν χαρακτήρα που δεν ανήκει στο συγκεκριμένο σύστημα. Παράδειγμα:- Το γράμμα "G" στο HEX (επιτρέπονται μόνο A-F).
- Το ψηφίο "2" στο BIN (επιτρέπονται μόνο 0 και 1).
- Το ψηφίο "8" στο OCT (επιτρέπονται μόνο 0-7).