KB وMB وGB: لماذا يظهر حجم الملف مختلفًا بين جهاز وآخر؟

دليل يوضح الفرق بين KB وMB وGB وبين KiB وMiB وGiB، ولماذا قد يعرض الجهاز نفسه حجمًا مختلفًا للملف رغم ثبات عدد البايتات.

اختلاف طريقة عرض حجم الملف بين الأجهزة
الملف نفسه لا يغيّر عدد بايتاته لمجرد فتحه على جهاز آخر، لكن طريقة تحويل البايتات إلى KB أو MB قد تختلف.

ملف يظهر عندك بحجم 10 MB، ثم تفتحه على نظام آخر فتجد رقمًا مختلفًا قليلًا. هل تغيّر الملف؟ ليس بالضرورة. أحيانًا البايتات هي نفسها تمامًا، والاختلاف كله في طريقة تسمية وحدات القياس وعرضها.

ابدأ من الوحدة التي لا خلاف عليها هنا: البايت
حجم الملف = عدد البايتات التي يحتويها

المتصفح نفسه يعرض حجم File بالبايتات عبر خاصية size في File API. الاختلاف يبدأ عندما نحوّل هذا الرقم الكبير إلى KB أو MB أو GB للعرض البشري.

KB وMB وGB في النظام العشري

في نظام SI، البادئات kilo وmega وgiga تعني قوى العدد 10. وفق NIST: kilo يساوي 10³، mega يساوي 10⁶، وgiga يساوي 10⁹. لهذا يكون 1 kB = 1000 بايت، و1 MB = 1,000,000 بايت، و1 GB = 1,000,000,000 بايت. [المصدر: NIST Guide to the SI]

NIST يوضح أيضًا أن استخدام kilo بمعنى 1024 أو mega بمعنى 1,048,576 غير صحيح ضمن SI نفسه، لأن هذه البادئات مخصصة لقوى 10. [المصدر: NIST SP 330]

العشري

1 kB = 1000 B
1 MB = 1,000,000 B
1 GB = 1,000,000,000 B

الثنائي

1 KiB = 1024 B
1 MiB = 1,048,576 B
1 GiB = 1,073,741,824 B

إذن من أين جاءت 1024؟

الحوسبة تعمل تاريخيًا كثيرًا بقوى العدد 2. العدد 1024 يساوي 2¹⁰، وهو قريب من 1000. لسنوات طويلة استُخدمت كلمات kilobyte وmegabyte بشكل غير منضبط أحيانًا للدلالة على مضاعفات ثنائية.

لحل الالتباس، اعتمدت IEC أسماء مستقلة للمضاعفات الثنائية: kibi وmebi وgibi وغيرها. NIST يعرض هذه التعريفات بوضوح: 1 KiB = 2¹⁰ بايت، و1 MiB = 2²⁰ بايت، و1 GiB = 2³⁰ بايت. [المصدر: NIST — Binary Prefixes]

توضيح بصري لتدرج وحدات حجم الملفات
المشكلة ليست أن أحد الرقمين “كاذب”؛ غالبًا كل واجهة تقسم عدد البايتات بطريقة مختلفة.

أمثلة توضح الفرق بين الوحدات

مثال بسيط: ملف حجمه 10,000,000 بايت

بالنظام العشري، تقسم على مليون فتحصل على 10 MB تمامًا. إذا قسّمت الرقم على 1,048,576، تحصل على نحو 9.54 MiB.

إذا عرض برنامج الرقم الثاني لكنه كتب بجانبه “MB” بدل “MiB”، سيبدو لك أن جهازًا ما “نقص” حجم الملف، رغم أن عدد البايتات لم يتغير إطلاقًا.

هذه من الحالات التي تجعل الشخص يظن أن الملف ضغط نفسه أو أن القرص “سرق مساحة”. في الحقيقة، كل ما تغيّر أحيانًا هو المقام الذي قُسم عليه عدد البايتات.

جدول سريع للمقارنة

الرمز القيمة بالبايت نوع البادئة
kB 1,000 عشرية SI
KiB 1,024 ثنائية IEC
MB 1,000,000 عشرية SI
MiB 1,048,576 ثنائية IEC
GB 1,000,000,000 عشرية SI
GiB 1,073,741,824 ثنائية IEC

لماذا تختلف المساحة المعروضة؟

لماذا يظهر قرص 500 GB بسعة أقل في بعض الأنظمة؟

إذا أعلن المصنع 500 GB بالنظام العشري، فهذا يعني 500 مليار بايت. عندما تعرض واجهة هذه البايتات على أساس 2³⁰ لكل وحدة، تحصل على رقم يقارب 465.66 GiB.

إذا سمّت الواجهة هذه القيمة “GB” بدل “GiB”، يظهر كأن هناك عشرات الجيجابايت المفقودة. جزء من الفرق قد يكون أيضًا بسبب التقسيم ونظام الملفات والمساحة المحجوزة، لكن أول فرق حسابي واضح يأتي من طريقة الوحدات نفسها.

المهم: قارن البايتات عندما تريد مقارنة دقيقة. الوحدات المختصرة مناسبة للقراءة، لكنها قد تخفي طريقة الحساب المستخدمة.

حجم الملف ليس هو نفسه “Size on disk”

حتى عندما يكون حجم الملف بالبايتات معروفًا، قد ترى في بعض أنظمة التشغيل قيمة أخرى باسم المساحة على القرص. السبب أن أنظمة الملفات تخزن البيانات في وحدات تخصيص أو clusters. ملف صغير قد يشغل وحدة كاملة حتى لو لم يستخدم كل بايت فيها.

لهذا يمكن أن يكون “حجم الملف” أقل من “المساحة التي يشغلها على القرص”. هذا موضوع مختلف عن الفرق بين MB وMiB، ومن المفيد عدم خلط السببين.

هل الضغط يغيّر الوحدة أم عدد البايتات؟

الضغط الحقيقي يغيّر كمية البيانات نفسها، وبالتالي يقل عدد البايتات. أما تغيير طريقة العرض من MB إلى MiB فلا يغير الملف إطلاقًا.

إذا كنت تقارن قبل الضغط وبعده، الأفضل أن تنظر إلى الحجم بالبايت أو تستخدم الأداة نفسها في القياسين حتى تكون طريقة التحويل واحدة.

قراءة الحجم في الاستخدام العملي

ماذا تعرض أداة فحص الملفات في تولاتي؟

الأداة تحصل على File.size من المتصفح. مواصفة W3C File API تعرف size بأنه عدد البايتات في البيانات. بعدها يمكن للواجهة تحويل الرقم إلى وحدة أسهل للقراءة. [المصدر: W3C File API]

هذا يجعل البايت هو المرجع الأفضل إذا أردت مقارنة نسختين بدقة. أما KB وMB وGB فهي طريقة عرض بشرية فوق هذا الرقم.

ثلاث حالات لا تحتاج فيها إلى القلق من الاختلاف

الرقم مختلف قليلًا والبايتات متطابقة

غالبًا طريقة العرض مختلفة فقط.

الأداة تكتب MiB أو GiB صراحة

هي تستخدم المضاعفات الثنائية، وهذا يفسر الرقم الأصغر مقارنة بـMB أو GB العشرية.

تقارن قرصًا معلنًا من المصنع بواجهة نظام

تحقق أولًا من نوع الوحدة قبل افتراض وجود مساحة مفقودة.

ومتى يصبح الاختلاف مهمًا؟

إذا تغير عدد البايتات نفسه بين نسختين يفترض أنهما متطابقتان، فهنا الموضوع ليس مجرد KB وMiB. قد تكون إحدى النسختين أعيد حفظها أو ضغطها أو تغير محتواها. عند الحاجة، استخدم SHA-256 لمقارنة الهوية الفعلية للملفين.

يمكنك قراءة دليل SHA-256 والتحقق من الملفات إذا كان هدفك معرفة هل النسختان متطابقتان فعلًا، وليس فقط كيف تُعرض أحجامهما.

انتبه إلى حرف B: MB ليست Mb

هناك التباس آخر مختلف تمامًا عن MB وMiB: الحرف الكبير B يعني byte، بينما الحرف الصغير b يعني bit. والبايت الواحد يساوي 8 بت. لذلك 100 MB ليست هي 100 Mb؛ الأولى أكبر بثماني مرات من الثانية من حيث عدد البتات.

هذه النقطة تظهر كثيرًا في سرعات الإنترنت. مزود الخدمة قد يعلن السرعة بالميجابت في الثانية Mb/s، بينما مدير التنزيل يعرض سرعة الملفات بالميجابايت في الثانية MB/s. التحويل النظري البسيط يقسم على 8 قبل احتساب أي overhead أو ظروف شبكة أخرى.

لماذا يرفض موقع ملفًا يبدو تحت الحد المسموح؟

قد يكتب موقع «الحد الأقصى 10 MB»، بينما الكود الداخلي يقارن الحجم بعدد بايتات محسوب على أساس مختلف أو يضيف قيودًا أخرى بعد الرفع. إذا كان الحد حرجًا، لا تعتمد على الرقم المقرب الذي يعرضه مستكشف الملفات فقط.

الحل العملي للمطور هو تحديد الوحدة بدقة في الواجهة وفي الكود: هل المقصود 10,000,000 بايت أم 10 MiB؟ أما للمستخدم، فإذا كان الملف قريبًا جدًا من الحد، اجعله أصغر قليلًا بدل محاولة الوقوف على الحد حرفيًا.

اعرف حجم الملف من نفس المصدر

أداة فحص الملفات في تولاتي تعرض حجم الملف مع معلوماته الأخرى. استخدمها لمقارنة الملفات من واجهة واحدة بدل التنقل بين أدوات قد تستخدم طرق عرض مختلفة.

فتح أداة فحص الملفات

ع م
عبد الكريم مرجانيكاتب موقع تولاتي — يراجع المصطلحات التقنية بالرجوع إلى المواصفات والمراجع الرسمية.

المصادر الرسمية المستخدمة

  1. NIST Guide to the SI — Chapter 4: تعريف بادئات kilo وmega وgiga كقوى عشرية.
  2. NIST — Prefixes for Binary Multiples: تعريف Ki وMi وGi للمضاعفات الثنائية.
  3. W3C — File API: تعريف File.size بعدد البايتات.