MiB से B में बदलें

MiB
1048576B

1 MiB = 1048576 B

कोई मान लिखिए और मेबीबाइट से बाइट का हिसाब लिखते-लिखते साथ-साथ चलता रहेगा। गुणक ठीक 1048576 है: 1 MiB पर इतने B. हिसाब आपके अपने डिवाइस पर होता है, और आपका लिखा हुआ अंक कहीं नहीं भेजा जाता।

  • कहाँ चलता है आपके ब्राउज़र में। आप जो संख्या लिखते हैं वह कभी किसी अनुरोध का हिस्सा नहीं बनती।
  • परिभाषा से ही सटीक 1 MiB ठीक 1048576 B होता है — यह परिभाषा है, गोल किया हुआ गुणक नहीं।
  • लिखते ही जवाब न कोई बटन, न इंतज़ार। कोई स्क्रिप्ट चलने से पहले ही हल किया हुआ जवाब पेज पर मौजूद है।

मेबीबाइट से बाइट, असल इस्तेमाल में

  • 700 MiB is 734000000 B

    — एक ऑडियो CD, जहाँ से वह संख्या आई है.

  • 8 MiB is 8389000 B

    — याददाश्त का एक खंड, जैसा कोई प्रोग्राम आरक्षित करता है.

  • 4.768 MiB is 5000000 B

    — फ़ोन से खींची गई एक फ़ोटो.

  • 0.0009766 MiB is 1024 B

    — एक किबीबाइट, और यहीं से गड़बड़ शुरू होती है.

मेबीबाइट से बाइट, एक नज़र में

यहाँ का हर आँकड़ा उसी परिभाषा से निकला है जो कैलकुलेटर इस्तेमाल करता है, इसलिए यह तालिका ऊपर वाले जवाब से अलग हो ही नहीं सकती।
MiBB
11048576
22097152
55242880
1010485760
5052428800
100104857600
500524288000
10001048576000

मेबीबाइट और बाइट

एक मेबीबाइट 1,024 किबीबाइट की है, यानी 1,048,576 बाइट। Linux के औज़ार और याददाश्त की संख्याएँ लगभग हमेशा यही कहती हैं, भले लिखा «MB» हो।

एक बाइट आठ बिट की होती है, और यह हमेशा तय नहीं था: शुरुआती कंप्यूटर छह, सात या नौ इस्तेमाल करते थे। आठ इसलिए जीता कि उसमें एक अक्षर बैठ जाता है और वह संख्या साफ़-साफ़ आधों में बँटती है।

एक मेबीबाइट बराबर ठीक 10,48,576 बाइट होता है

इस तरफ़ हिसाब गुणा का है, और वह भी पूरे अंक से: एक मेबीबाइट बराबर 10,48,576 बाइट, ठीक-ठीक। 10,48,576 कोई नाप नहीं है जो पास आ गई हो, यह परिभाषा है।

इसीलिए यह उन गिनी-चुनी गिनतियों में है जो दिमाग़ में करने लायक़ हैं, और नतीजा जाँचा भी जा सकता है: वापस भाग दीजिए और आपको ठीक उसी अंक पर लौटना होगा जहाँ से चले थे, बिना किसी बची हुई गुंजाइश के।

MiB बाइनरी वाली इकाई है

एक MiB अपने नीचे वाली इकाई का 1,024 गुना होता है; एक MB 1,000 गुना। इस पेज पर यह 1048576 B और 1000000 B का फ़र्क़ है — 4.9 % — और हर सीढ़ी पर यह फ़ासला बढ़ता जाता है। इसीलिए एक तस्वीर पर यह गोलाई भर है और हार्ड डिस्क पर दिखने लायक़ हिस्सा।

ग़ायब जगह का पूरा रहस्य इतना ही है, और इस पेज पर वह 4.9 % का बनता है। MB के नाम पर बिकी डिस्क में ठीक उतना ही होता है जितना डिब्बे पर लिखा है — दशमलव हिसाब से एक MB यानी 1000000 B। विंडोज़ उसे 1,000 के बजाय 1,024 से बाँटता है और नाम दशमलव वाला ही रखता है, इसलिए उसका «एक MB» दरअसल 1048576 B का निकलता है और डिस्क का अंक उतना ही छोटा दिखने लगता है। ऐपल का मैकओएस 10.6 से इन्हें दशमलव इकाइयों में ही गिनता है, और यही वजह है कि एक ही डिस्क दो मशीनों पर दो अलग आकार की दिख सकती है। न कुछ ग़ायब हुआ है, न कोई गोलाई हुई है — वही बाइट दो नामों से गिने जा रहे हैं।

वह अंक जो exact होना चाहिए, पढ़ने-लायक़ नहीं

ज़्यादातर आकार-बदलाव इसलिए होते हैं ताकि कोई इंसान मात्रा समझ सके। यह अक्सर इसलिए होता है ताकि कोई मशीन उसे लागू कर सके — अपलोड-सीमा, heap-आकार, buffer।

यहाँ काम का अंक 1,048,576 और उसके गुणक हैं, कोई अंदाज़ा नहीं। दस MiB है 10,485,760 बाइट; 64 MiB है 67,108,864।

वे suffix जो MiB लिखे बिना MiB का मतलब रखते हैं

बहुत सारा सॉफ़्टवेयर अंक के आगे एक अक्षर लेता है और उसे 1,024-आधारित मानता है। nginx के k और m suffix बाइनरी हैं। JVM के heap-फ़्लैग बाइनरी हैं।

GNU dd दोनों परंपराएँ स्वीकारता है और लंबाई से अलग करता है — bs=1M है 1,048,576 बाइट, bs=1MB है 1,000,000। स्क्रिप्ट के बीच block-size कॉपी करते वक़्त suffix ठीक-ठीक कॉपी कीजिए।

एक ही खाने में Mi और M — Kubernetes का मामला

Kubernetes दोनों पैमाने साफ़ स्वीकारता है — memory: 512Mi है 536,870,912 बाइट और memory: 512M है 512,000,000। दोनों वैध हैं, दोनों schema-जाँच पार करते हैं।

फ़र्क़ ऊपर के पैमाने पर चौड़ा होता है — mega क़दम पर 4.86 प्रतिशत, giga पर 7.37, इसलिए 4Gi और 4G लगभग 295 मेगाबाइट अलग हैं।

स्थिरांक ऐसे लिखना कि अगला पाठक जाँच सके

कोड में गुणा-अंक साफ़ लिखा हुआ अंक हरा देता है। 1024 * 1024 और 1 << 20 दोनों बताते हैं मान क्या है और कोई समीक्षक शून्य गिने बिना जाँच सकता है।

अनुशासन का दूसरा हिस्सा नामकरण है। maxBytes नाम का खाना ग़लती से mebibyte-अंक नहीं ले सकता; maxSize नाम का खाना ले सकता है।

जो MiB-अंक आपको मिला वह पहले से बाइनरी था

यहाँ पहुँचने वाला अंक आमतौर पर किसी ऐसी चीज़ से आता है जो डिफ़ॉल्ट रूप से बाइनरी इकाई में मापती है। free डिफ़ॉल्ट रूप से kibibyte में बताता है। /proc/meminfo kB छापता है और kibibyte का मतलब रखता है।

यह सुविधाजनक है — उस पढ़ाई को 1,048,576 से गुणा करना बिना किसी नुक़सान के असली बाइट-अंक तक वापस पहुँचाता है।

गोल mebibyte, अटपटे बाइट — 700 MiB की मिसाल

MiB में साफ़ अंक बाइट में अटपटा हो जाता है, और दोनों पैमाने पर एक साथ साफ़ रहने की कोई व्यवस्था नहीं। 700 MiB है 734,003,200 बाइट। 250 MiB है 262,144,000।

क्लासिक मिसाल है CD — अस्सी-मिनट की डेटा-डिस्क 737,280,000 बाइट रखती है, यानी 703.125 MiB। तीस साल से इसे «700 MB डिस्क» कहा जाता रहा है, जो न दशमलव 700 MB है, न बाइनरी 700 MiB।

Alignment ही वजह है कि MiB नीचे की हर चीज़ में साफ़ बँटता है

एक mebibyte ठीक 256 मेमोरी-page है 4,096 बाइट के, या 2,048 डिस्क-सेक्टर 512 बाइट के। हर सीमा पूरे अंक पर बैठती है — यही वजह है buffer, ring-buffer, mmap-क्षेत्र बाइनरी इकाई में तय होते हैं।

दशमलव मेगाबाइट इनमें से किसी में साफ़ नहीं बँटता — 1,000,000 बाइट 244.14 page है, इसलिए किसी buffer का एक सिरा किसी page-सीमा को लाँघता है।

किसी टेस्ट को इस्तेमाल करने लायक़ boundary-मान

mebibyte में बताई सीमा के लिए एक नहीं, तीन fixture चाहिए, और उनके आकार इसी बदलाव से निकलते हैं। 10 MiB की सीमा के लिए काम के बाइट हैं 10,485,759, 10,485,760, 10,485,761।

ऐसे fixture इकाई में नहीं, बाइट-गिनती में बनाना बेहतर है। किसी सहज इकाई में बनाई फ़ाइल उसी आधार को विरासत में लेती है जो बनाने वाले औज़ार ने चुना।

MiB से B में बदलें: आम सवाल

1 MiB में कितने B होते हैं?

1 MiB बराबर 1048576 B. यह मान सटीक है, गोल किया हुआ नहीं: मेबीबाइट और बाइट का अनुपात परिभाषा से ही तय है।

मैं जो लिखता हूँ वह कहीं भेजा जाता है?

नहीं। हिसाब आपके ब्राउज़र में होता है। आप कनेक्शन काटकर भी गिनती जारी रख सकते हैं, और जाँचने का सबसे आसान तरीक़ा भी यही है।

मेरी डिस्क उससे कम जगह क्यों दिखाती है जितनी उस पर लिखी है?

क्योंकि एक ही नाम की दो अलग इकाइयाँ चल रही हैं। बनाने वाले 1 GB = 1,00,00,00,000 बाइट गिनते हैं; Windows गिबीबाइट दिखाता है, यानी 1,07,37,41,824 बाइट, पर उन्हें «GB» कहता है। इसी से वही डिस्क सात प्रतिशत छोटी लगने लगती है। ग़ायब कुछ नहीं हुआ है।

उलटी तरफ़: बाइट से मेबीबाइट

एक B बराबर 9.53674e-7 MiB होता है। यह वही रिश्ता है, बस उलटा पढ़ा हुआ — इसलिए एक पेज से मिला नतीजा दूसरे पेज से गुज़ारने पर वहीं लौटना चाहिए जहाँ से चला था।

ये आँकड़े कहाँ से आए

इस पेज पर डेटा की इकाइयाँ के बारे में जो कहा गया है, वह जाँचा जा सकता है, और ये रहे वे दस्तावेज़ जो उसे तय करते हैं।

यह पेज काम कैसे करता है

गुणक पेज के अंदर एक स्थिरांक है और गणित चार क्रियाओं का है, इसलिए कुछ कहीं भेजा नहीं जाता और भेजने की ज़रूरत भी नहीं। आप जो संख्या लिखते हैं वह ब्राउज़र से बाहर नहीं जाती — उसे ले जाने वाला कोई अनुरोध ही नहीं है।