प्रोग्रामिंग नंबर फॉर्मेट
भाषाएं संख्याओं को कैसे संभालती हैं
नंबर फॉर्मेट समझेंहर प्रोग्रामिंग भाषा को संख्याओं को दर्शाने के तरीकों की आवश्यकता होती है। Integer प्रकार, floating-point फॉर्मेट, और संख्या आधार नोटेशन को समझने से आपको सही कोड लिखने और प्रिसिजन, ओवरफ्लो, और प्रतिनिधित्व से संबंधित सूक्ष्म बग से बचने में मदद मिलती है।
Integer प्रकार
निश्चित-आकार Integers
| प्रकार | बिट | Signed रेंज | Unsigned रेंज |
|---|---|---|---|
| int8 | 8 | -128 से 127 | 0 से 255 |
| int16 | 16 | -32,768 से 32,767 | 0 से 65,535 |
| int32 | 32 | -2.1B से 2.1B | 0 से 4.3B |
| int64 | 64 | ±9.2 quintillion | 0 से 18.4 quintillion |
भाषा उदाहरण
- C/C++: int, long, int32_t, uint64_t
- Java: byte, short, int, long
- Rust: i8, i16, i32, i64, u8, u16, u32, u64
- Go: int8, int16, int32, int64
Floating-Point संख्याएं
IEEE 754 मानक
- float (32-बिट): ~7 दशमलव अंक प्रिसिजन
- double (64-बिट): ~15-16 दशमलव अंक प्रिसिजन
संरचना
- साइन बिट (1 बिट)
- एक्सपोनेंट (8 या 11 बिट)
- मंटिसा/सिग्निफिकैंड (23 या 52 बिट)
प्रसिद्ध समस्या
0.1 + 0.2 = 0.30000000000000004
ऐसा इसलिए होता है क्योंकि 0.1 और 0.2 को बाइनरी floating-point में सटीक रूप से दर्शाया नहीं जा सकता।
भाषा के अनुसार नंबर बेस नोटेशन
| भाषा | बाइनरी | ऑक्टल | Hex |
|---|---|---|---|
| JavaScript | 0b1010 | 0o12 | 0x0A |
| Python 3 | 0b1010 | 0o12 | 0x0A |
| C/C++/Java | 0b1010* | 012 | 0x0A |
| C# | 0b1010 | — | 0x0A |
| Ruby | 0b1010 | 0o12 | 0x0A |
| Go | 0b1010 | 0o12 | 0x0A |
| Rust | 0b1010 | 0o12 | 0x0A |
*C: बाइनरी लिटरल C23 में जोड़े गए; C++14 और Java 7+ इन्हें सपोर्ट करते हैं।
JavaScript संख्याएं
विशेषताएं
- सभी संख्याएं 64-बिट floating-point (IEEE 754) हैं
- सुरक्षित integer रेंज: ±9,007,199,254,740,991 (2⁵³-1)
- बड़े integers के लिए BigInt (ES2020+)
नंबर लिटरल
let dec = 255; // Decimal let hex = 0xFF; // Hexadecimal let bin = 0b11111111; // Binary let oct = 0o377; // Octal let big = 9007199254740992n; // BigInt
सावधानियाँ
0.1 + 0.2 !== 0.3(floating-point)parseInt('08') === 8(आधुनिक JS में ठीक किया गया)
Python संख्याएं
विशेषताएं
- Integers में मनमानी प्रिसिजन है (कोई ओवरफ्लो नहीं)
- Floats 64-बिट IEEE 754 हैं
- Complex संख्याएं बिल्ट-इन हैं
नंबर लिटरल
dec = 255 # Decimal hex_num = 0xFF # Hexadecimal bin_num = 0b11111111 # Binary oct_num = 0o377 # Octal complex_num = 3+4j # Complex
रूपांतरण
bin(255) # '0b11111111'
hex(255) # '0xff'
oct(255) # '0o377'
int('FF', 16) # 255मनमानी प्रिसिजन संख्याएं
कब ज़रूरत होती है
- क्रिप्टोग्राफी (बड़ी कुंजियाँ)
- वित्तीय गणनाएं (सटीक दशमलव)
- वैज्ञानिक कंप्यूटिंग (अत्यधिक प्रिसिजन)
भाषा सपोर्ट
- Python: int (हमेशा मनमानी प्रिसिजन)
- JavaScript: BigInt (integers के लिए)
- Java: BigInteger, BigDecimal
- C#: BigInteger, decimal
उदाहरण: JavaScript BigInt
const big = 9007199254740993n; const result = big * 2n; // n प्रत्यय ज़रूरी
फॉर्मेटेड आउटपुट
JavaScript
num.toString(2) // Binary string num.toString(16) // Hex string num.toFixed(2) // 2 decimal places
Python
f"{255:b}" # '11111111' (binary)
f"{255:x}" # 'ff' (hex)
f"{255:08b}" # '11111111' (padded)C/C++
printf("%d", num); // Decimal
printf("%x", num); // Hex (lowercase)
printf("%X", num); // Hex (uppercase)
printf("%o", num); // Octalबिटवाइज़ ऑपरेशन
अधिकांश भाषाओं में integer प्रकारों के लिए उपलब्ध:
| ऑपरेशन | चिह्न | उदाहरण |
|---|---|---|
| AND | & | 5 & 3 = 1 |
| OR | | | 5 | 3 = 7 |
| XOR | ^ | 5 ^ 3 = 6 |
| NOT | ~ | ~5 = -6 |
| Left shift | << | 5 << 1 = 10 |
| Right shift | >> | 5 >> 1 = 2 |
निष्कर्ष
प्रोग्रामिंग भाषाएं विभिन्न प्रकारों के माध्यम से संख्याओं को संभालती हैं: निश्चित-आकार integers (int32, int64), floating-point (float, double), और मनमानी प्रिसिजन प्रकार (BigInt, BigDecimal)। बेस नोटेशन (0b, 0o, 0x उपसर्ग) और प्रत्येक प्रकार की सीमाओं को समझना—विशेषकर floating-point प्रिसिजन समस्याएं—सूक्ष्म बग से बचने में मदद करता है। जब सटीक दशमलव अंकगणित महत्वपूर्ण हो (वित्त, मुद्राएं), तो floating-point के बजाय विशेष decimal प्रकारों का उपयोग करें।