यह कैसे काम करता है
भंडारण इकाइयाँ दो अलग-अलग तरीकों से गिनी जाती हैं और दोनों सही हैं। दशमलव प्रणाली, जिसे ड्राइव निर्माता और अंतरराष्ट्रीय इकाई प्रणाली अपनाती है, हर उपसर्ग पर 1000 से गुणा करती है: एक kB यानी 1,000 बाइट, एक MB यानी दस लाख और एक TB यानी एक ट्रिलियन। बाइनरी प्रणाली, जो कंप्यूटरों के साथ जन्मी, 1024 से गुणा करती है, क्योंकि मेमोरी और बस दो की घातों में संबोधित होते हैं।
समस्या यह है कि दशकों तक दोनों प्रणालियों ने एक ही नाम इस्तेमाल किए। जब Windows एक्सप्लोरर "GB" लिखता है तो असल में वह गिबीबाइट गिन रहा होता है, यानी तीन बार 1024 से भाग दे रहा होता है। इसीलिए 1 TB की ड्राइव, जिसमें ठीक एक ट्रिलियन बाइट होते हैं, स्क्रीन पर 931.32 GB दिखती है: कुछ भी कम नहीं हुआ, बस गिनने का पैमाना बदल गया। 1998 से IEC 80000-13 मानक बाइनरी उपसर्ग KiB, MiB, GiB और TiB के ज़रिए यह अस्पष्टता दूर करता है।
यह टूल किसी क्षमता को एक साथ तीनों परिवारों में —दशमलव, बाइनरी और बिट— बदलता है और बाइट की सटीक संख्या, निर्माता द्वारा घोषित आँकड़ा तथा ऑपरेटिंग सिस्टम में दिखने वाला आँकड़ा, दोनों के बीच के प्रतिशत अंतर के साथ दिखाता है। सारी गणना ब्राउज़र में ही होती है।
उदाहरण
1 TB931,32 GBड्राइव में 1,000,000,000,000 बाइट हैं, ठीक उतने ही जितने डिब्बे पर लिखे हैं। सिस्टम उन्हें तीन बार 1024 से भाग देता है और 931.32 GB दिखाता है, जो सख़्त अर्थ में 931.32 GiB हैं। स्क्रीन पर लगभग 69 GB कम लगते हैं; ड्राइव में एक भी बाइट कम नहीं है।1 GiB1073741824 Bएक गिबीबाइट 2^30 बाइट होता है। एक दशमलव गीगाबाइट 1,000,000,000 होता है, यानी बाइनरी वाला 7.37 % बड़ा है। यही वह अंतर है जो "एक गीगा" कहने पर आपके मतलब और हर प्रोग्राम की समझ को अलग करता है।4 TB3,64 TiBउपसर्ग जितना बड़ा, दोनों प्रणालियाँ उतनी ही दूर: किलो पर 2.34 %, गीगा पर 6.87 % और टेरा पर 9.05 %। इसीलिए "ड्राइव छोटी निकली" वाला एहसास बड़ी ड्राइव में ही ज़्यादा होता है।100 Mbit12,5 MBनेटवर्क लिंक बिट में और भंडारण बाइट में मापा जाता है। 100 Mbit/s का लिंक अधिकतम 12.5 MB प्रति सेकंड डाउनलोड करता है, क्योंकि हर बाइट में 8 बिट होते हैं। यही एक गणना इंटरनेट प्रदाताओं के ख़िलाफ़ आधी शिकायतों की वजह समझा देती है।उपयोग के मामले
- समझना कि 1 TB की ड्राइव या 64 GB का पेन ड्राइव पैकेट पर लिखी क्षमता से कम क्यों दिखाते हैं।
- किसी API, लॉग या ls -l कमांड से मिले बाइट आकार को पढ़ने योग्य रूप में बदलना।
- अलग-अलग पैमानों से मापने वाले दो टूल के बीच बैकअप या इमेज का आकार तुलना करना।
- कोटा, वॉल्यूम या अपलोड सीमाएँ तय करना जब दस्तावेज़ MiB में और इंटरफ़ेस MB में बात करता है।
- लिंक की गति Mbit/s से असली डाउनलोड गति MB/s में बदलना।
- ग्राहक को आँकड़ों के साथ समझाना कि उसने जो ड्राइव खरीदी है उसमें वादे से कम जगह नहीं है।
अक्सर पूछे जाने वाले प्रश्न
मैंने 1 TB की ड्राइव खरीदी और 931 GB दिख रहा है, क्या मेरे साथ धोखा हुआ?
नहीं। ड्राइव में 1,000,000,000,000 बाइट हैं, और सभी निर्माताओं की दशमलव प्रणाली में 1 TB का यही अर्थ है। Windows उन्हीं बाइट को तीन बार 1024 से भाग देता है, 931.32 पाता है, और नतीजे पर "GiB" के बजाय "GB" का लेबल लगा देता है। यह लेबल की समस्या है, क्षमता की नहीं: सारे बाइट मौजूद हैं। असल में जो कम होता है, वह अलग बात है: फ़ॉर्मैट करते समय फ़ाइल सिस्टम जो जगह आरक्षित करता है।
GB और GiB में क्या अंतर है?
एक GB 1,000,000,000 बाइट (10^9) होता है और एक GiB 1,073,741,824 (2^30)। गिबीबाइट 7.37 % बड़ा है। यही अनुपात हर स्तर पर दोहराता है: kB बनाम KiB, MB बनाम MiB, TB बनाम TiB। बाइनरी संकेतों के बीच में एक "i" होता है और उन्हें किबी, मेबी, गिबी और टेबी कहा जाता है।
क्या सभी ऑपरेटिंग सिस्टम एक ही आँकड़ा दिखाते हैं?
नहीं, और यहीं भ्रम और बढ़ता है। Windows 1024 की घातों में गणना करता है पर लेबल GB और TB लगाता है, इसलिए 1 TB की ड्राइव को 931 GB दिखाता है। macOS 2009 से दशमलव में मापता है, इसलिए वही ड्राइव 1 TB दिखती है। Linux में यह टूल पर निर्भर करता है: df -h और ls -lh 1024 का इस्तेमाल करते हैं, df -H और ls -l --si 1000 का, और कई उपयोगिताएँ ज़रूरत पड़ने पर GiB लिखने लगी हैं। ड्राइव कभी नहीं बदली; बदला वह जो उसे माप रहा है।
RAM डिब्बे पर लिखे आँकड़े से क्यों मेल खाती है?
क्योंकि मेमोरी दो की घातों में बनाई और संबोधित की जाती है: "16 GB" के मॉड्यूल में असल में 16 GiB यानी 17,179,869,184 बाइट होते हैं। चूँकि ऑपरेटिंग सिस्टम भी बाइनरी में गिनता है, दोनों संख्याएँ मेल खा जाती हैं और किसी को कुछ पता नहीं चलता। ड्राइव के साथ उल्टा होता है: निर्माता दशमलव में गिनता है और सिस्टम बाइनरी में, इसलिए अंतर तुरंत दिखता है।
उपसर्ग के साथ अंतर कितना बढ़ता है?
हर स्तर पर 2.4 % जुड़ता जाता है। सिस्टम जो संख्या दिखाता है वह किलो पर 2.34 %, मेगा पर 4.63 %, गीगा पर 6.87 %, टेरा पर 9.05 %, पेटा पर 11.18 % और एक्सा पर 13.26 % छोटी होती है। इसीलिए कुछ kB की फ़ाइल में अंतर पता ही नहीं चलता, जबकि कई पेटाबाइट के ऐरे में यह सैकड़ों टेराबाइट की उम्मीद बन जाता है।
क्या Mbit और MB एक ही चीज़ हैं?
नहीं, अंतर आठ गुना का है। नेटवर्क लिंक बिट प्रति सेकंड में और भंडारण बाइट में मापा जाता है, और एक बाइट में 8 बिट होते हैं। 300 Mbit/s का लिंक अधिकतम 37.5 MB/s डाउनलोड देता है, प्रोटोकॉल हेडर घटाने से पहले ही। इसके अलावा नेटवर्क के उपसर्ग हमेशा दशमलव होते हैं: एक Mbit दस लाख बिट होता है, कभी 1,048,576 नहीं।
मेरे SSD में और भी कम जगह क्यों है?
दशमलव और बाइनरी के अंतर पर दो चीज़ें और जुड़ती हैं। पहली है ओवर-प्रोविज़निंग: कंट्रोलर फ़्लैश मेमोरी का एक हिस्सा अपने पास रखता है, जो इस्तेमाल नहीं हो सकता, ताकि घिसे हुए ब्लॉक बदले जा सकें और लिखाई तेज़ हो। दूसरी है फ़ाइल सिस्टम, जो फ़ॉर्मैट करते ही टेबल, जर्नल और मेटाडेटा में जगह लेता है। इनमें से कोई ख़राबी नहीं है: यह ड्राइव के चलने और टिकने की क़ीमत है।
तो दस्तावेज़ लिखते समय कौन-सी इकाई इस्तेमाल करनी चाहिए?
वही जो कोई संदेह न छोड़े। अगर मान 1024 की घातों से निकलता है तो MiB या GiB लिखिए; अगर 1000 की घातों से निकलता है तो MB या GB। किसी API या कॉन्फ़िगरेशन फ़ाइल में सबसे सुरक्षित यही है कि बाइट की संख्या सीधे दी जाए और इंटरफ़ेस तय करे कि उसे कैसे दिखाना है। यह कोड की एक पंक्ति घंटों की बहस बचा देती है कि एक ही फ़ाइल के लिए दो टूल अलग-अलग आँकड़े क्यों बताते हैं।