Data Type Limits in CPP – Just Calculate It.

Data Type Limits in C++: यदि हम विभिन्न प्रकार के Primary Data Type के Variables द्वारा Occupy किए जाने वाले Variables की अधिकतम व न्यूनतम मान का पता लगाना चाहें और ये जानना चाहें, कि विभिन्न प्रकार के Variables Memory में कितनी संख्‍या तक का मान Store कर सकते हैं, तो हम ये जानने के लिए climit.h Header File को Use कर सकते हैं। इस Header File में विभिन्न प्रकार के Data Types द्वारा Store किए जा सकने वाले मान की Range को विभिन्न प्रकार के Constants द्वारा Define कर दिया गया है। कई बार इस File का नाम climits.h के स्थान पर limits.h भी होता है। इसे हम निम्न Program में निम्नानुसार Use कर सकते हैं:

// File: DataTypeLimit.cpp
#include <iostream.h>
#include <conio.h>
#include <limits.h>

void main()
{
  cout << "Minimum short : " << SHRT_MIN << endl;
  cout << "Maximum short : " << SHRT_MAX << endl;
  cout << "Minimum unsigned short : " << 0 << endl;
  cout << "Maximum unsigned short : " << USHRT_MAX << endl;
  cout << "Minimum int : " << INT_MIN << endl;
  cout << "Maximum int : " << INT_MAX << endl;
  cout << "Minimum unsigned int : " << 0 << endl;
  cout << "Maximum unsigned int : " << UINT_MAX << endl;
  cout << "Minimum long : " << LONG_MIN << endl;
  cout << "Maximum long : " << LONG_MAX << endl;
  cout << "Minimum unsigned long : " << 0 << endl;
  cout << "Maximum unsigned long : " << ULONG_MAX << endl;
  getch();
}

Output:
  Minimum short : -32768
  Maximum short : 32767
  Minimum unsigned short : 0
  Maximum unsigned short : 65535
  Minimum int : -2147483648
  Maximum int : 2147483647
  Minimum unsigned int : 0
  Maximum unsigned int : 4294967295
  Minimum long : -2147483648
  Maximum long : 2147483647
  Minimum unsigned long : 0
  Maximum unsigned long : 4294967295

इसी तरह से कई और Definitions limits.h नाम की Header File में दिए गए हैं, जिन्हें इस Header File को Open करके देखा जा सकता है। इसी तरह से यदि हम विभिन्न प्रकार के Floats Data Types की Range का पता लगाना चाहें, तो हम cfloats.h नाम की Header File को अपने Program में Use करना होता है। इस File को भी कई Compiler में केवल floats.h नाम से सम्बोधित किया जाता है। यदि हम चाहें तो विभिन्न प्रकार के Floats की Range को देखने के लिए इस Header File को Open कर सकते हैं।

यदि हम ये जानना चाहें कि विभिन्न प्रकार के Data Type के Variable Memory में कितने Bytes की Space Reserve करते हैं, तो इस बात का पता लगाने के लिए हम sizeof() Operator का प्रयोग कर सकते हैं।

सामान्यतया Integer Data Type के अलावा सभी Data Types सभी प्रकार के Computers में समान Memory Occupy करते हैं, जबकि Integer Memory में Compiler के Register की Size के बराबर Space Reserve करता है। यदि हम 16-Bit Compiler में 16-Bit Processor पर Program Develop करते या Run करते हैं, तो Integer 16-Bit System में 2-Bytes का होता है जबकि 32-Bit System में Integer की Size 4-Bytes होती है। हम जिस Compiler को Use कर रहे हैं, उस Compiler द्वारा हर प्रकार के Basic Data Type द्वारा Occupy की जा रही Memory का पता हम निम्न Program द्वारा लगा सकते हैं:

// File: DataTypeSize.cpp
#include <iostream.h>
#include <conio.h>

void main()
{
  cout << "char : " << sizeof(char) << " Bytesn";
  cout << "short : " << sizeof(short) << " Bytesn";
  cout << "int : " << sizeof(int) << " Bytesn";
  cout << "long : " << sizeof(long) << " Bytesnn";

  cout << "signed char : " << sizeof(signed char) << " Bytesn";
  cout << "signed short : " << sizeof(signed short) << " Bytesn";
  cout << "signed int : " << sizeof(signed int) << " Bytesn";
  cout << "signed long : " << sizeof(signed long) << " Bytesnn";

  cout << "unsigned char : " << sizeof(unsigned char) << " Bytes n";
  cout << "unsigned short: " << sizeof(unsigned short) << " Bytesn";
  cout << "unsigned int : " << sizeof(unsigned int) << " Bytesn";
  cout << "unsigned long : " << sizeof(unsigned long) << " Bytesnn";

  cout << "float : " << sizeof(float) << " Bytes n";
  cout << "double : " << sizeof(double) << " Bytesn";
  cout << "long double : " << sizeof(long double) << " Bytesn";

  getch();
}

Output:
// 16 – Bit Compiler’s Output
  char : 1 Bytes
  short : 2 Bytes
  int : 2 Bytes
  long : 4 Bytes

  signed char : 1 Bytes
  signed short : 2 Bytes
  signed int : 2 Bytes
  signed long : 4 Bytes

  unsigned char : 1 Bytes
  unsigned short: 2 Bytes
  unsigned int : 2 Bytes
  unsigned long : 4 Bytes

  float : 4 Bytes
  double : 8 Bytes
  long double : 10 Bytes

// 32 – Bit Compiler’s Output
  char : 1 Bytes
  short : 2 Bytes
  int : 4 Bytes
  long : 4 Bytes

  signed char : 1 Bytes
  signed short : 2 Bytes
  signed int : 4 Bytes
  signed long : 4 Bytes

  unsigned char : 1 Bytes
  unsigned short: 2 Bytes
  unsigned int : 4 Bytes
  unsigned long : 4 Bytes

  float : 4 Bytes
  double : 8 Bytes
  long double : 10 Bytes

Real Numbers को C++ float, double long double तीन तरह से Support करता है। ज्यादातर Computers पर double Data Type, float Data Type की तुलना में दुगना Bytes लेता है। यानी ज्यादातर Computers पर float 4 – Bytes की Space लेता है जबकि double Data Type 8 – Bytes की Space का प्रयोग करता है। जब कि long double 8, 10, 12 या 16 Bytes का प्रयोग Data को Store करने के लिए करता है।

 जिस प्रकार के Data को Represent करने यानी Memory में Store करने व Memory से Access करने के लिए हम float प्रकार के Variable का प्रयोग करते हैं, उस प्रकार के Data को Real Numbers कहते हैं। ज्यादातर Computers पर Real Numbers जैसे कि 123.45 सबसे पहले निम्नानुसार Binary Form में Convert होते हैं:

   123.45   =  1111011.011100112 * 27

जब Real Number Binary Form में Convert हो जाता है, तब Point के बाद की संख्‍या दसमलव के बाद की Binary को Represent करती है और Point से पहले की Binary संख्‍या के Left Hand Side के अंकों को Represent करती है। अब Binary Digits के Point को Float किया जाता है, ताकि सभी Bits Point के Right Side में आ जाएं। ऐसा करने पर Point को सात Bit Left में Sift करना पडता है, जिससे घातांक 27 प्राप्त होता है। अब हमें जो Binary Number प्राप्त होता है, वह निम्नानुसार होता हैः

   123.45   =  0.1111011011100112 * 27

अब इस Number के सामान्य Number के Binary Bits व उसके घातांक के मान 7 दोनों को Memory में Internally अलग-अलग Store किया जाता है। 32 – Bit Float Real Number की Binary Digits को 23 – Bits Segment में Store होती है और घातांक का मान 8 – Bit में Store किया जाता है। एक Bit द्वारा संख्‍या का Sign तय किया जाता है। इसी तरह से जब हम double प्रकार के Variable में मान Store करते हैं, तब 64 – Bit double में संख्‍या 52 – Bit Segment में Store होती है और घातांक को 11 – Bit में Store किया जाता है।

निम्न Program द्वारा हम ये पता लगा सकते हैं, कि हमारा Computer Float व Double प्रकार के Variables में कितने Bits में किसी Real Number के मान व उसके घातांक को Store कर रहा है। इस बात का पता लगाने के लिए हमें float.h नाम की Header File को अपनी Source File में Include करना जरूरी होता है। क्योंकि Float के सम्बंध में जितने भी Definitions हैं, उन्हें float.h नाम की Header File में Define किया गया है।

// File : FloatRange.cpp
#include <iostream.h>
#include <conio.h>
#include <float.h>

void main()
{
  // Prints the storage size of fundamental types:
  int fbits = 8 * sizeof(float); // Each byte contains 8-bits
  cout << "Float Uses " << fbits << "bits: nt"
  << (FLT_MANT_DIG – 1) << " bits for its mantissa. nt"
  << (fbits - FLT_MANT_DIG) << "bits for its exponent.nt"
  << 1 << " bit for its signn"
  << "to obtain: " << FLT_DIG << " sig. digitsn"
  << "with minimum value: " << FLT_MIN << endl
  << "and maximum value: " << FLT_MAX << endl;
  getch();
}

Output
  Float Uses 32bits:
  23 bits for its mantissa.
  8 bits for its exponent.
  1 bit for its sign
  to obtain: 6 sig. digits
  with minimum value: 1.17549e-38
  and maximum value: 3.40282e+38

इसी तरह से यदि हम double प्रकार के Data Type की Range जानना चाहें, तो इसी Program को निम्नानुसार  Modify कर सकते हैं:

// File : DoubleRange.cpp
#include <iostream.h>
#include <conio.h>
#include <float.h>

void main()
{
  // Prints the storage size of fundamental types:
  int fbits = 8 * sizeof(double); // Each byte contains 8-bits
  cout << "Float Uses " << fbits << "bits: nt"
  << (DBL_MANT_DIG – 1) << " bits for its mantissa. nt"
  << (fbits - FLT_MANT_DIG) << "bits for its exponent.nt"
  << 1 << " bit for its signn"
  << "to obtain: " << FLT_DIG << " sig. digitsn"
  << "with minimum value: " << FLT_MIN << endl
  << "and maximum value: " << FLT_MAX << endl;
  getch();
}

Output
  Float Uses 64bits:
          52 bits for its mantissa.
          40bits for its exponent.
          1 bit for its sign
  to obtain: 6 sig. digits
  with minimum value: 1.17549e-38
  and maximum value: 3.40282e+38

CPP Programming Language in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook C++ Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C++ Programming Language in Hindi | Page: 666 | Format: PDF

BUY NOW GET DEMO REVIEWS