दो कारण हैं कि आपको अलग-अलग संख्यात्मक डेटा प्रकारों से संबंधित होना चाहिए।
1. स्मृति की बचत
for(long k=0;k<=10;k++)
{
//stuff
}
एक लंबे समय का उपयोग क्यों करें जब यह आसानी से पूर्णांक, या यहां तक कि एक बाइट हो सकता है? आप वास्तव में ऐसा करके स्मृति के कई बाइट्स बचा सकते हैं।
2. फ़्लोटिंग पॉइंट नंबर और पूर्णांक संख्या कंप्यूटर में अलग-अलग संग्रहीत होते हैं
मान लीजिए कि हमारे पास एक पूर्णांक में संग्रहीत संख्या 22 है। कंप्यूटर इस संख्या को बाइनरी में मेमोरी के रूप में संग्रहीत करता है:
0000 0000 0000 0000 0000 0000 0001 0110
यदि आप बाइनरी नंबर सिस्टम से परिचित नहीं हैं, तो इसे वैज्ञानिक संकेतन में दर्शाया जा सकता है: 2 ^ 0 * 0 + 2 ^ 1 * 1 + 2 ^ 2 * 1 + 2 ^ 3 * 0 + 2 ^ 4 * 1 + 2 ^ 5 * 0 + ... + 2 ^ 30 * 0। यह इंगित करने के लिए कि संख्या नकारात्मक है या नहीं (डेटा प्रकार हस्ताक्षरित या अहस्ताक्षरित है) के आधार पर अंतिम बिट का उपयोग किया जा सकता है या नहीं।
अनिवार्य रूप से, यह केवल 2 ^ (बिट स्थान) * मान का योग है।
यह तब बदलता है जब आप दशमलव बिंदु से जुड़े मानों का उल्लेख कर रहे हैं। मान लीजिए कि आपके पास दशमलव में संख्या 3.75 है। इसे बाइनरी में 11.11 के रूप में संदर्भित किया जाता है। हम इसे 2 ^ 1 * 1 + 2 ^ 0 * 1 + 2 ^ -1 * 1 + 2 ^ -2 * 1 या सामान्य रूप से 1.111 * 2 ^ 2 के रूप में एक वैज्ञानिक संकेतन के रूप में दर्शा सकते हैं।
हालाँकि, कंप्यूटर इसे स्टोर नहीं कर सकता है: इसमें बाइनरी पॉइंट (दशमलव बिंदु के बाइनरी नंबर सिस्टम संस्करण) को व्यक्त करने का कोई स्पष्ट तरीका नहीं है। कंप्यूटर केवल 1 और 0 के स्टोर कर सकता है। यह वह जगह है जहाँ फ्लोटिंग पॉइंट डेटा टाइप आता है।
साइज़ोफ़ (फ्लोट) मानकर 4 बाइट्स हैं, तो आपके पास कुल 32 बिट्स हैं। पहले बिट को "साइन बिट" सौंपा गया है। कोई अहस्ताक्षरित फ़्लोट या युगल नहीं हैं। अगले 8 बिट्स का उपयोग "घातांक" के लिए किया जाता है और अंतिम 23 बिट्स को "महत्व" (या कभी-कभी मंटिसा के रूप में संदर्भित) के रूप में उपयोग किया जाता है। 3.75 उदाहरण का उपयोग करते हुए, हमारा घातांक 2 ^ 1 होगा और हमारा महत्व 1.111 होगा।
यदि पहला बिट 1 है, तो संख्या ऋणात्मक है। यदि नहीं, तो सकारात्मक। प्रतिपादक को "पूर्वाग्रह" नामक कुछ द्वारा संशोधित किया जाता है, इसलिए हम घातांक के रूप में बस "0000 0010" को स्टोर नहीं कर सकते हैं। एक एकल सटीक फ्लोटिंग पॉइंट संख्या के लिए पूर्वाग्रह 127 है, और एक डबल परिशुद्धता के लिए पूर्वाग्रह (यह वह जगह है जहां डबल डेटाटाइप को इसका नाम मिलता है) 1023 है। अंतिम 23 बिट्स महत्व के लिए आरक्षित हैं। महत्व केवल हमारे द्विआधारी बिंदु के अधिकार के लिए मूल्य है।
हमारा प्रतिपादक पूर्वाग्रह (127) + प्रतिपादक (1) होगा या बाइनरी में दर्शाया जाएगा
1000 0000
हमारा महत्व होगा:
111 0000 0000 0000 0000 0000
इसलिए, 3.75 को इस रूप में दर्शाया गया है:
0100 0000 0111 0000 0000 0000 0000 0000
अब, चलिए संख्या let's को एक फ्लोटिंग पॉइंट संख्या के रूप में और पूर्णांक संख्या के रूप में देखें:
0100 0001 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 1000
दुनिया में 8.0 और 8 को जोड़ने वाला कंप्यूटर कैसा है? या यहां तक कि उन्हें गुणा !? कंप्यूटर (विशेष रूप से, x86 कंप्यूटर) में सीपीयू के विभिन्न भाग होते हैं जो फ्लोटिंग पॉइंट नंबर और पूर्णांक संख्या को जोड़ते हैं।