حاسبة طول البت والبايت - أداة مجانية لحجم البيانات
احسب أطوال البت والبايت للأعداد الصحيحة، والسلاسل السداسية، والنصوص باستخدام ترميزات UTF-8، UTF-16، ASCII. أداة مجانية عبر الإنترنت للمطورين وعلماء البيانات ومهندسي الشبكات.
حاسبة طول البت والبايت
8 بت = 1 بايت
التصور
التوثيق
ما حاسبة طول البِت والبايت؟
تحسب حاسبة طول البِت والبايت عدد البِتات والبايتات التي تحتاج إليها قطعة من البيانات. البِت هو رقم ثنائي واحد، 0 أو 1. والبايت مجموعة من 8 بِتات. تقبل الحاسبة عددًا صحيحًا، أو سلسلة سداسية عشرية، أو سلسلة نصية، وتعرض الحجم الدقيق بكلتا الوحدتين.
يهم ذلك في البرمجة والشبكات وتخزين البيانات. فعمود قاعدة البيانات وحزمة الشبكة والملف المخزَّن على القرص لها أحجام تُقاس بالبايت، ويعتمد هذا الحجم على طريقة كتابة البيانات.
كيفية حساب طول البِت لعدد صحيح
طول البِت لعدد صحيح موجب هو عدد الخانات في تمثيله الثنائي. على سبيل المثال، العدد 255 بالثنائي هو 11111111، ويتكون من 8 خانات، ولذلك فإن طول بِته هو 8.
الصيغة: بالنسبة إلى عدد صحيح موجب n، يكون طول البِت هو عدد الخانات في تمثيل n بالأساس 2. أما الحالة الخاصة n = 0 فلها طول بِت قدره 1.
تستخدم الأعداد الصحيحة السالبة متمم الاثنين، وهي الطريقة القياسية التي تخزّن بها الحواسيب الأعداد ذات الإشارة. طول البِت لعدد صحيح سالب هو أصغر عدد من البِتات يمكنه احتواء العدد في صورة متمم الاثنين. على سبيل المثال، يتسع العدد −128 في 8 بِتات (بالصورة 10000000)، لكن العدد −129 يحتاج إلى 9 بِتات، لأن 8 بِتات لا يمكنها النزول إلا إلى −128.
بعد معرفة طول البِت، يُحدَّد طول البايت بالتقريب إلى أعلى بايت كامل:
طول البايت = ⌈طول البِت ÷ 8⌉
يعني الرمز ⌈ ⌉ «التقريب إلى أعلى». وتظل قيمة من 9 بِتات تحتاج إلى 2 بايت كاملين، لأن البايت لا يمكن تقسيمه.
مثال محلول
| عدد صحيح | طول البِت | طول البايت |
|---|---|---|
| 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 |
كيفية حساب طول البِت لسلسلة سداسية عشرية
يمثل كل رقم سداسي عشري (0–9، وA–F) 4 بِتات بالضبط، لأن 4 بِتات يمكنها احتواء 16 قيمة ممكنة.
الصيغة: طول البِت = عدد الأرقام السداسية العشرية × 4. ويُحسب طول البايت مرة أخرى بقسمة طول البِت على 8، ثم التقريب إلى أعلى.
على سبيل المثال، تحتوي السلسلة السداسية العشرية "FF" على 2 رقم، ولذلك فإن طول بِتها هو 2 × 4 = 8 بِتات، أي 1 بايت. أما السلسلة السداسية العشرية "ABCD" فتحتوي على 4 أرقام، ما يعطي 16 بِتًا، أو 2 بايت. تُزال المسافات وغيرها من المحارف الفارغة قبل العد. وحتى العدد الفردي من الأرقام يُقرَّب إلى بايت كامل: فالسلسلة "F" تساوي 4 بِتات، وتعرضها الحاسبة على أنها 1 بايت.
كيفية حساب طول البايت لسلسلة نصية
بالنسبة إلى النص، يعتمد الحجم على ترميز المحارف، أي القاعدة المستخدمة لتحويل المحارف إلى بايتات. تدعم الحاسبة خمسة ترميزات:
- UTF-8: ترميز متغير الطول يُستخدم على نطاق واسع في الويب. يحتاج كل محرف إلى ما بين 1 و4 بايتات. وتحتاج الحروف والأرقام وعلامات الترقيم الإنجليزية العادية إلى 1 بايت لكل منها.
- UTF-16: يُستخدم داخليًا في JavaScript وWindows. تحتاج معظم المحارف إلى 2 بايت، بينما تحتاج المحارف الواقعة خارج المستوى متعدد اللغات الأساسي، مثل كثير من الرموز التعبيرية، إلى 4 بايتات.
- UTF-32: ترميز ثابت الطول. يحتاج كل محرف إلى 4 بايتات بالضبط، بغض النظر عن ماهيته.
- ASCII: ترميز من 7 بِتات يغطي 128 محرفًا، معظمها حروف وأرقام إنجليزية وعلامات ترقيم أساسية. يحتاج كل محرف إلى 1 بايت. ويُرفض أي محرف خارج هذه المجموعة.
- Latin-1 (ISO-8859-1): ترميز من 8 بِتات يغطي 256 محرفًا، ويضيف الحروف ذات العلامات المستخدمة في لغات أوروبا الغربية. يحتاج كل محرف إلى 1 بايت. وتُرفض المحارف خارج هذه المجموعة.
الصيغة: طول البايت = عدد البايتات التي ينتجها الترميز للسلسلة. طول البِت = طول البايت × 8.
تغطي هذه الأعداد النص نفسه. ولا تُضاف علامة ترتيب البايتات، ولذلك يكون عدد بايتات UTF-16 أو UTF-32 هنا أصغر بمقدار 2 أو 4 بايتات من العدد الناتج عن أداة تكتب علامة في البداية.
مثال محلول
يحتوي النص "Hello, world!" على 13 محرفًا، وكلها حروف وعلامات ترقيم ASCII عادية.
- UTF-8: 13 بايتًا (104 بِتًا)، لأن كل محرف يمكن تمثيله في 1 بايت.
- UTF-16: 26 بايتًا (208 بِتًا)، لأن كل محرف يحتاج إلى 2 بايت.
يحتاج النص "こんにちは世界" (سبعة محارف يابانية) إلى 3 بايتات لكل محرف في UTF-8، أي ما مجموعه 21 بايتًا (168 بِتًا).
يقع رمز تعبيري مثل 😀 خارج المستوى متعدد اللغات الأساسي. ويحتاج إلى 4 بايتات في UTF-8، وإلى 4 بايتات في UTF-16 (على هيئة زوج من البدائل)، وإلى 4 بايتات في UTF-32.
لماذا تغيّر الأعداد الصحيحة ذات الإشارة النتيجة
تخزّن الحواسيب الأعداد السالبة باستخدام متمم الاثنين بدلًا من علامة ناقص عادية. وهذا يعني أن طول بِت العدد الصحيح السالب ليس ببساطة طول بِت القيمة المطلقة مضافًا إليه واحد. والقاعدة هي أن طول البِت هو أصغر عدد من البِتات k بحيث تكون القيمة أكبر من أو تساوي −2^(k−1). ولذلك يتسع −128 (وهو يساوي −2⁷) في 8 بِتات، بينما يحتاج −129 إلى 9.
الأسئلة الشائعة
كيف أحوّل البايتات إلى بِتات؟ اضرب في 8. تساوي عشرة بايتات 80 بِتًا، لأن كل بايت يحتوي بحكم التعريف على 8 بِتات.
ما الفرق بين طول البِت وطول البايت؟ يحسب طول البِت عدد الخانات الثنائية الفردية. أما طول البايت فيعدّ مجموعات من 8 بِتات، ويُقرَّب إلى البايت الكامل التالي عندما لا يكون طول البِتات من مضاعفات 8.
كم بايتًا يستخدم محرف UTF-8؟ بين 1 و4 بايتات. وتستخدم المحارف المشتركة مع ASCII 1 بايت. وتستخدم كثير من الحروف اللاتينية واليونانية والسيريلية ذات العلامات 2 بايتين. وتستخدم معظم المحارف الصينية واليابانية والكورية 3 بايتات. أما الرموز التعبيرية والرموز النادرة الأخرى فتستخدم 4 بايتات.
كيف يُحسب طول البايت لسلسلة سداسية عشرية؟ تُعدّ الأرقام السداسية العشرية بعد إزالة المسافات الفارغة، ثم تُضرب في 4 للحصول على البِتات، وبعد ذلك تُقرَّب إلى بايتات كاملة. يتكون كل بايت من 2 رقم سداسي عشري، ولذلك فإن "FF" يساوي 1 بايت، و"ABCD" يساوي 2 بايتين. أما الرقم المفرد مثل "F" فيساوي 4 بِتات، لكنه يشغل 1 بايت.
لماذا يحتاج العدد الصحيح السالب أحيانًا إلى بِتات أكثر من نظيره الموجب؟ يستخدم متمم الاثنين بِتًا واحدًا لتحديد الإشارة، لكن هذا البِت مشترك مع نطاق قيم العدد بدلًا من إضافته فوق ذلك النطاق في كل حالة. يتسع −128 في عدد البِتات نفسه، وهو 8 بِتات، مثل القيم الموجبة حتى 127، لكن −129 لم يعد يتسع في 8 بِتات ويحتاج إلى 9.
ما أحجام الإدخال التي تقبلها هذه الحاسبة؟ الأعداد الصحيحة والسلاسل السداسية العشرية والسلاسل النصية التي يصل طولها إلى 1,000,000 محرف.
المراجع
- "Character encoding." ويكيبيديا، مؤسسة ويكيميديا. https://en.wikipedia.org/wiki/Character_encoding
- "UTF-8, UTF-16, UTF-32 & BOM." يونيكود، شركة. https://www.unicode.org/faq/utf_bom.html
- "Two's complement." ويكيبيديا، مؤسسة ويكيميديا. https://en.wikipedia.org/wiki/Two%27s_complement