Υπολογιστής Μήκους Bit και Byte - Δωρεάν Εργαλείο Μεγέθους Δεδομένων
Υπολογίστε μήκη bit και byte για ακέραιους, δεκαεξαδικές συμβολοσειρές και κείμενο με κωδικοποιήσεις UTF-8, UTF-16, ASCII. Δωρεάν διαδικτυακό εργαλείο για προγραμματιστές, επιστήμονες δεδομένων και μηχανικούς δικτύων.
Υπολογιστής Μήκους Bit και Byte
8 bit = 1 bytes
Οπτικοποίηση
Τεκμηρίωση
Τι είναι ένας υπολογιστής μήκους bit και byte;
Ένας υπολογιστής μήκους bit και byte βρίσκει πόσα bit και byte χρειάζεται ένα τμήμα δεδομένων. Ένα bit είναι ένα μόνο δυαδικό ψηφίο, 0 ή 1. Ένα byte είναι μια ομάδα 8 bit. Ο υπολογιστής δέχεται έναν ακέραιο, μια δεκαεξαδική συμβολοσειρά ή μια συμβολοσειρά κειμένου και αναφέρει το ακριβές μέγεθος και στις δύο μονάδες.
Αυτό έχει σημασία στον προγραμματισμό, τη δικτύωση και την αποθήκευση δεδομένων. Μια στήλη βάσης δεδομένων, ένα πακέτο δικτύου και ένα αρχείο στον δίσκο έχουν μέγεθος που μετριέται σε byte, και αυτό το μέγεθος εξαρτάται από τον τρόπο εγγραφής των δεδομένων.
Πώς υπολογίζεται το μήκος bit ενός ακεραίου
Το μήκος bit ενός θετικού ακεραίου είναι ο αριθμός των ψηφίων στη δυαδική μορφή του. Για παράδειγμα, το 255 στο δυαδικό σύστημα είναι 11111111, το οποίο έχει 8 ψηφία, επομένως το μήκος bit του είναι 8.
Τύπος: για έναν θετικό ακέραιο n, το μήκος bit είναι ο αριθμός των ψηφίων στην αναπαράσταση του n με βάση-2. Η ειδική περίπτωση n = 0 έχει μήκος bit 1.
Οι αρνητικοί ακέραιοι χρησιμοποιούν συμπλήρωμα ως προς δύο, τον τυπικό τρόπο με τον οποίο οι υπολογιστές αποθηκεύουν προσημασμένους αριθμούς. Το μήκος bit ενός αρνητικού ακεραίου είναι ο μικρότερος αριθμός bit που μπορεί να τον αναπαραστήσει σε μορφή συμπληρώματος ως προς δύο. Για παράδειγμα, το −128 χωρά σε 8 bit (ως 10000000), αλλά το −129 χρειάζεται 9 bit, επειδή τα 8 bit μπορούν να φτάσουν μόνο έως το −128 προς τα κάτω.
Αφού γίνει γνωστό το μήκος bit, το μήκος byte βρίσκεται με στρογγυλοποίηση προς τα πάνω στο πλησιέστερο ακέραιο byte:
Μήκος byte = ⌈μήκος bit ÷ 8⌉
Το σύμβολο ⌈ ⌉ σημαίνει «στρογγυλοποίηση προς τα πάνω». Μια τιμή 9 bit εξακολουθεί να χρειάζεται 2 πλήρη byte, επειδή ένα byte δεν μπορεί να διαιρεθεί.
Λυμένο παράδειγμα
| Ακέραιος | Μήκος bit | Μήκος byte |
|---|---|---|
| 0 | 1 | 1 |
| 255 | 8 | 1 |
| 256 | 9 | 2 |
| −128 | 8 | 1 |
| −129 | 9 | 2 |
| 18,446,744,073,709,551,615 (2⁶⁴ − 1) | 64 | 8 |
Πώς υπολογίζεται το μήκος bit μιας δεκαεξαδικής συμβολοσειράς
Κάθε δεκαεξαδικό ψηφίο (0–9, A–F) αντιστοιχεί ακριβώς σε 4 bit, επειδή 4 bit μπορούν να περιέχουν 16 πιθανές τιμές.
Τύπος: μήκος bit = αριθμός δεκαεξαδικών ψηφίων × 4. Το μήκος byte είναι και πάλι το μήκος bit διαιρεμένο με 8 και στρογγυλοποιημένο προς τα πάνω.
Για παράδειγμα, η δεκαεξαδική συμβολοσειρά «FF» έχει 2 ψηφία, επομένως το μήκος bit της είναι 2 × 4 = 8 bit ή 1 byte. Η δεκαεξαδική συμβολοσειρά «ABCD» έχει 4 ψηφία, άρα 16 bit ή 2 byte. Τα κενά και οι άλλοι χαρακτήρες κενού διαστήματος αφαιρούνται πριν από την καταμέτρηση. Ένας περιττός αριθμός ψηφίων και πάλι στρογγυλοποιείται προς τα πάνω σε ακέραιο αριθμό byte: το «F» είναι 4 bit, το οποίο ο υπολογιστής αναφέρει ως 1 byte.
Πώς υπολογίζεται το μήκος byte μιας συμβολοσειράς κειμένου
Για το κείμενο, το μέγεθος εξαρτάται από την κωδικοποίηση χαρακτήρων, δηλαδή τον κανόνα που χρησιμοποιείται για τη μετατροπή χαρακτήρων σε byte. Ο υπολογιστής υποστηρίζει πέντε κωδικοποιήσεις:
- UTF-8: κωδικοποίηση μεταβλητού μήκους που χρησιμοποιείται σε ολόκληρο τον Ιστό. Κάθε χαρακτήρας καταλαμβάνει από 1 έως 4 byte. Τα απλά αγγλικά γράμματα, τα ψηφία και τα σημεία στίξης καταλαμβάνουν 1 byte το καθένα.
- UTF-16: χρησιμοποιείται εσωτερικά από τη JavaScript και τα Windows. Οι περισσότεροι χαρακτήρες καταλαμβάνουν 2 byte· οι χαρακτήρες εκτός του Βασικού Πολυγλωσσικού Επιπέδου, όπως πολλά emoji, καταλαμβάνουν 4 byte.
- UTF-32: κωδικοποίηση σταθερού μήκους. Κάθε χαρακτήρας καταλαμβάνει ακριβώς 4 byte, ανεξάρτητα από το ποιος είναι.
- ASCII: κωδικοποίηση 7 bit που καλύπτει 128 χαρακτήρες, κυρίως αγγλικά γράμματα, ψηφία και βασικά σημεία στίξης. Κάθε χαρακτήρας καταλαμβάνει 1 byte. Κάθε χαρακτήρας εκτός αυτού του συνόλου απορρίπτεται.
- Latin-1 (ISO-8859-1): κωδικοποίηση 8 bit που καλύπτει 256 χαρακτήρες και προσθέτει τονισμένα γράμματα που χρησιμοποιούνται στις δυτικοευρωπαϊκές γλώσσες. Κάθε χαρακτήρας καταλαμβάνει 1 byte. Οι χαρακτήρες εκτός αυτού του συνόλου απορρίπτονται.
Τύπος: μήκος byte = ο αριθμός των byte που παράγει η κωδικοποίηση για τη συμβολοσειρά. Μήκος bit = μήκος byte × 8.
Οι μετρήσεις αφορούν μόνο το ίδιο το κείμενο. Δεν προστίθεται δείκτης σειράς byte, επομένως μια μέτρηση UTF-16 ή UTF-32 εδώ είναι κατά 2 ή 4 byte μικρότερη από εκείνη ενός εργαλείου που γράφει δείκτη στην αρχή.
Λυμένο παράδειγμα
Το κείμενο «Hello, world!» έχει 13 χαρακτήρες, όλοι απλά γράμματα και σημεία στίξης ASCII.
- UTF-8: 13 byte (104 bit), επειδή κάθε χαρακτήρας χωρά σε 1 byte.
- UTF-16: 26 byte (208 bit), επειδή κάθε χαρακτήρας καταλαμβάνει 2 byte.
Το κείμενο «こんにちは世界» (επτά ιαπωνικοί χαρακτήρες) καταλαμβάνει 3 byte ανά χαρακτήρα σε UTF-8, δηλαδή 21 byte (168 bit).
Ένα emoji όπως το 😀 βρίσκεται εκτός του Βασικού Πολυγλωσσικού Επιπέδου. Καταλαμβάνει 4 byte σε UTF-8, 4 byte σε UTF-16 (ως ζεύγος υποκατάστασης) και 4 byte σε UTF-32.
Γιατί οι προσημασμένοι ακέραιοι αλλάζουν την απάντηση
Οι υπολογιστές αποθηκεύουν τους αρνητικούς αριθμούς με συμπλήρωμα ως προς δύο αντί για ένα απλό πρόσημο μείον. Αυτό σημαίνει ότι το μήκος bit ενός αρνητικού ακεραίου δεν είναι απλώς το μήκος bit του απόλυτου μεγέθους του συν ένα. Ο κανόνας είναι ο εξής: το μήκος bit είναι ο μικρότερος αριθμός bit k για τον οποίο η τιμή είναι τουλάχιστον −2^(k−1). Γι’ αυτό το −128 (που ισούται με −2⁷) χωρά σε 8 bit, ενώ το −129 χρειάζεται 9.
Συχνές ερωτήσεις
Πώς μετατρέπω byte σε bit; Πολλαπλασιάστε επί 8. Δέκα byte ισοδυναμούν με 80 bit, επειδή κάθε byte περιέχει εξ ορισμού 8 bit.
Ποια είναι η διαφορά μεταξύ μήκους bit και μήκους byte; Το μήκος bit μετρά τα μεμονωμένα δυαδικά ψηφία. Το μήκος byte μετρά ομάδες των 8 bit, με στρογγυλοποίηση προς τα πάνω στο επόμενο ακέραιο byte όταν το μήκος bit δεν είναι πολλαπλάσιο του 8.
Πόσα byte χρησιμοποιεί ένας χαρακτήρας UTF-8; Από 1 έως 4. Οι χαρακτήρες που είναι κοινοί με το ASCII χρησιμοποιούν 1 byte. Πολλοί τονισμένοι λατινικοί, ελληνικοί και κυριλλικοί χαρακτήρες χρησιμοποιούν 2 byte. Οι περισσότεροι κινεζικοί, ιαπωνικοί και κορεατικοί χαρακτήρες χρησιμοποιούν 3 byte. Τα emoji και άλλα σπάνια σύμβολα χρησιμοποιούν 4 byte.
Πώς υπολογίζεται το μήκος byte μιας δεκαεξαδικής συμβολοσειράς; Μετρήστε τα δεκαεξαδικά ψηφία αφού αφαιρέσετε τα κενά διαστήματα, πολλαπλασιάστε επί 4 για να βρείτε τα bit και, στη συνέχεια, στρογγυλοποιήστε προς τα πάνω σε ακέραιο αριθμό byte. Κάθε byte είναι 2 δεκαεξαδικά ψηφία, επομένως το «FF» είναι 1 byte και το «ABCD» είναι 2 byte. Ένα μεμονωμένο ψηφίο, όπως το «F», είναι 4 bit και εξακολουθεί να καταλαμβάνει 1 byte.
Γιατί ένας αρνητικός ακέραιος χρειάζεται μερικές φορές περισσότερα bit από το αντίστοιχο θετικό του; Το συμπλήρωμα ως προς δύο χρησιμοποιεί ένα bit για να δηλώσει το πρόσημο, αλλά αυτό το bit μοιράζεται το εύρος τιμών αντί να προστίθεται επιπλέον σε κάθε περίπτωση. Το −128 χωρά στα ίδια 8 bit με τις θετικές τιμές έως το 127, αλλά το −129 δεν χωρά πλέον σε 8 bit και χρειάζεται 9.
Ποια μεγέθη εισόδου δέχεται αυτός ο υπολογιστής; Ακέραιους, δεκαεξαδικές συμβολοσειρές και συμβολοσειρές κειμένου μήκους έως 1.000.000 χαρακτήρες.
Παραπομπές
- "Character encoding." Wikipedia, Wikimedia Foundation. https://en.wikipedia.org/wiki/Character_encoding
- "UTF-8, UTF-16, UTF-32 & BOM." Unicode, Inc. https://www.unicode.org/faq/utf_bom.html
- "Two's complement." Wikipedia, Wikimedia Foundation. https://en.wikipedia.org/wiki/Two%27s_complement