حاسبة طول البت والبايت - أداة مجانية لحجم البيانات
احسب أطوال البت والبايت للأعداد الصحيحة، والسلاسل السداسية، والنصوص باستخدام ترميزات 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 إلى 127.
بعد معرفة طول البِت، يُحدَّد طول البايت بالتقريب إلى أعلى بايت كامل:
طول البايت = ⌈طول البِت ÷ 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 بايت. وتُتجاهل المسافات داخل السلسلة قبل العدّ.
كيفية حساب طول البايت لسلسلة نصية
بالنسبة إلى النص، يعتمد الحجم على ترميز المحارف، أي القاعدة المستخدمة لتحويل المحارف إلى بايتات. تدعم الحاسبة خمسة ترميزات:
- UTF-8: ترميز متغير الطول يُستخدم في أنحاء الويب. يشغل كل محرف من 1 إلى 4 بايتات. وتشغل الأحرف الإنجليزية العادية والأرقام وعلامات الترقيم 1 بايت لكل منها.
- UTF-16: تستخدمه JavaScript وWindows داخليًا. يتكوّن كل محرف من وحدة واحدة أو وحدتين، طول كل منهما 16 بِتًا. ويشغل معظم المحارف 2 بايت؛ أما المحارف الواقعة خارج المستوى متعدد اللغات الأساسي، مثل كثير من الرموز التعبيرية، فتشغل 4 بايتات.
- UTF-32: ترميز ثابت الطول. يحتاج كل محرف إلى 4 بايتات بالضبط، بغض النظر عن ماهيته.
- ASCII: ترميز من 7 بِتات يُخزَّن بمعدل محرف واحد لكل بايت من 8 بِتات، ويغطي 128 محرفًا، أغلبها أحرف إنجليزية وأرقام وعلامات ترقيم أساسية. ويشغل كل محرف 1 بايت. وأي محرف خارج هذه المجموعة يُرفض.
- Latin-1 (ISO-8859-1): ترميز من 8 بِتات يغطي 256 محرفًا، ويضيف الحروف ذات العلامات المستخدمة في لغات أوروبا الغربية. يحتاج كل محرف إلى 1 بايت. وتُرفض المحارف خارج هذه المجموعة.
الصيغة: طول البايت = عدد البايتات التي ينتجها الترميز للسلسلة. طول البِت = طول البايت × 8.
أمثلة محلولة
يحتوي النص "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 للحصول على عدد البِتات، ثم اقسمه على 8 وقرّب الناتج إلى أعلى. تساوي "FF" 1 بايت، وتساوي "ABCD" 2 بايت. وحتى العدد الفردي من الخانات، مثل "ABC" (12 بِتًا)، يحتاج إلى 2 بايت.
لماذا يحتاج العدد الصحيح السالب أحيانًا إلى بِتات أكثر من نظيره الموجب؟ يستخدم المتمم الثنائي بِتًا واحدًا لتحديد الإشارة، لكن هذا البِت مشترك مع نطاق قيم العدد بدلًا من إضافته فوق ذلك النطاق في كل حالة. يتسع −128 في عدد البِتات نفسه، وهو 8 بِتات، مثل القيم الموجبة حتى 127، لكن −129 لم يعد يتسع في 8 بِتات ويحتاج إلى 9.
ما أحجام الإدخال التي تقبلها هذه الحاسبة؟ الأعداد الصحيحة والسلاسل السداسية العشرية والسلاسل النصية التي يصل طولها إلى 1,000,000 محرف.
المراجع
- Unicode, Inc. FAQ: UTF-8, UTF-16, UTF-32 & BOM. الأسئلة الشائعة عن ترميز Unicode — يتكوّن كل محرف من بايت واحد إلى أربعة بايتات، طول كل منها 8 بِتات، في UTF-8؛ ومن وحدة ترميز واحدة أو وحدتين، طول كل منهما 16 بِتًا، في UTF-16؛ ومن وحدة ترميز واحدة طولها 32 بِتًا في UTF-32.
- فريق عمل هندسة الإنترنت (IETF). RFC 3629: UTF-8, a transformation format of ISO 10646. RFC 3629 — يستخدم UTF-8 من 1 إلى 4 بايتات؛ فالنطاق U+0000–U+007F يشغل 1 بايت، والنطاق U+0080–U+07FF يشغل 2 بايت، والنطاق U+0800–U+FFFF يشغل 3 بايتات، والنطاق U+10000 وما فوقه يشغل 4 بايتات.
- فريق عمل هندسة الإنترنت (IETF). RFC 20: ASCII format for network interchange. RFC 20 — ترميز ASCII القياسي ذو 7 بِتات مضمَّنًا في بايت من 8 بِتات.
- Oracle. The Java Language Specification, Java SE 21, Chapter 4: Types, Values, and Variables. الفصل 4 من JLS — البايت عدد صحيح ذو إشارة بصيغة المتمم الثنائي، طوله 8 بِتات، ومداه من −128 إلى 127.