Μετατροπέας Αριθμητικών Συστημάτων: BIN/HEX/DEC/OCT & Αρνητικοί Αριθμοί

Ο κόσμος των υπολογιστών λειτουργεί με μηδέν και ένα, αλλά οι άνθρωποι σκέφτονται σε δεκάδες. Και οι προγραμματιστές; Πρέπει να κατανοούν τα πάντα ενδιάμεσα. Είτε κάνετε αποσφαλμάτωση κώδικα χαμηλού επιπέδου, είτε ρυθμίζετε χρώματα σε CSS, είτε υπολογίζετε μάσκες IP, είτε επιλύετε εργασίες πληροφορικής, θα συναντήσετε την ανάγκη μετατροπής αριθμών μεταξύ συστημάτων.

Οι συνηθισμένες αριθμομηχανές των Windows ή του κινητού είναι συχνά αργές και αδέξιες. Ο έξυπνος μετατροπέας αριθμητικών συστημάτων μας σχεδιάστηκε από προγραμματιστές για προγραμματιστές. Προσφέρει άμεση μετατροπή σε πραγματικό χρόνο, υποστήριξη για εξαιρετικά μεγάλους αριθμούς και, ως ένα από τα λίγα online εργαλεία, χειρίζεται σωστά τους αρνητικούς αριθμούς σε δυαδική μορφή.

Τι μπορεί να κάνει αυτός ο μετατροπέας αριθμητικών συστημάτων;

Κατά την ανάπτυξη αυτού του widget, επικεντρωθήκαμε στην επίλυση των πιο συχνών προβλημάτων των προγραμματιστών:

  1. Ανταπόκριση σε πραγματικό χρόνο: Κανένα κουμπί “Υπολογισμός”. Ξεκινήστε να πληκτρολογείτε στο πεδίο HEX και δείτε αμέσως πώς αλλάζουν τα BIN και DEC.
  2. Υποστήριξη αρνητικών αριθμών (Signed Integers): Οι περισσότεροι online μετατροπείς αποτυγχάνουν όταν πληκτρολογείτε -5. Εμείς όχι. Χάρη στην επιλογή βάθους bit (8, 16, 32, 64 bit), προσομοιώνουμε την ακριβή συμπεριφορά του επεξεργαστή χρησιμοποιώντας το συμπλήρωμα ως προς δύο.
  3. Αναγνωσιμότητα δυαδικού κώδικα: Το να κοιτάτε το 1110101011011110 είναι κουραστικό. Το εργαλείο μας μπορεί να μορφοποιήσει αυτόματα την έξοδο σε 4 bit (nibbles) σε 1110 1010 1101 1110, μειώνοντας δραστικά τα λάθη κατά την αντιγραφή.
  4. Υποστήριξη 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;

Δοκιμάστε το μόνοι σας στον μετατροπέα μας:

  1. Ορίστε το βάθος σε 8-bit.

    • Εισάγετε στο DEC: -5.
    • Αποτέλεσμα HEX: FB.
    • Αποτέλεσμα BIN: 1111 1011.
    • Εξήγηση: $256 - 5 = 251$ (το οποίο είναι FB).
  2. Ορίστε το βάθος σε 16-bit.

    • Εισάγετε στο DEC: -5.
    • Αποτέλεσμα HEX: FFFB.
    • Εξήγηση: Επειδή έχουμε περισσότερο χώρο, οι “άσοι” συμπληρώνουν τον υπόλοιπο χώρο αριστερά.
  3. Ορίστε το βάθος σε Μόνο θετικά (Unsigned).

    • Αν εισάγετε -5, το πεδίο θα κοκκινίσει. Αυτή η λειτουργία δεν υποστηρίζει αρνητικούς αριθμούς, καθώς θα απαιτούσε άπειρους άσους.

Επαγγελματική συμβουλή: Εάν εργάζεστε με χρώματα ή διευθύνσεις IP, χρησιμοποιείτε πάντα τη λειτουργία “Μόνο θετικά”. Εάν κάνετε εργασίες σε C/C++ ή assembler, μεταβείτε σε 32-bit ή 64-bit.


Πίνακας γρήγορων μετατροπών (Cheat Sheet)

Για γρήγορο προσανατολισμό, παραθέτουμε τις βασικές τιμές που πρέπει να γνωρίζει κάθε “ITάς” απ’ έξω.

Δεκαδικό (DEC)Δεκαεξαδικό (HEX)Δυαδικό (BIN)Σημείωση
0000000Μηδέν
1010001
100A1010
150F1111Μέγιστη τιμή 4 bit (Nibble)
16100001 0000
1277F0111 1111Μέγιστη τιμή για signed 8-bit (char)
255FF1111 1111Μέγιστη τιμή για unsigned 8-bit (byte)
65 535FFFFΜέγιστη τιμή για 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).
Διορθώστε το τυπογραφικό λάθος και ο υπολογισμός θα συνεχιστεί.