C# में BitConverter.Int64BitsToDouble() मेथड निर्दिष्ट 64-बिट साइन्ड इंटीजर को डबल-प्रिसिजन फ्लोटिंग-पॉइंट संख्या के रूप में पुनर्व्याख्या (reinterpret) करता है। यह बिट पैटर्न को बदले बिना, केवल उसके अर्थ को बदलता है।
सिंटैक्स
public static double Int64BitsToDouble (long val);
पैरामीटर val परिवर्तित की जाने वाली संख्या है।
उदाहरण 1: बड़ा इंटीजर मान
using System;
public class Demo
{
public static void Main()
{
long d = 9846587687;
Console.Write("Value (64-bit signed integer) = " + d);
double res = BitConverter.Int64BitsToDouble(d);
Console.Write("\nValue (double-precision floating point number) = " + res);
}
}
आउटपुट
Value (64-bit signed integer) = 9846587687 Value (double-precision floating point number) = 4.86486070491012E-314
उदाहरण 2: छोटा मान
using System;
public class Demo
{
public static void Main()
{
long d = 20;
Console.Write("Value (64-bit signed integer) = " + d);
double res = BitConverter.Int64BitsToDouble(d);
Console.Write("\nValue (double-precision floating point number) = " + res);
}
}
आउटपुट
Value (64-bit signed integer) = 20 Value (double-precision floating point number) = 9.88131291682493E-323
कैसे काम करता है: IEEE 754 बिट लेआउट
64-बिट डबल (IEEE 754) की संरचना:
- बिट 63: साइन (0 = धनात्मक, 1 = ऋणात्मक)
- बिट 62-52 (11 बिट्स): एक्सपोनेंट (बायस 1023)
- बिट 51-0 (52 बिट्स): मेंटिसा/सिग्निफिकेंड
उदाहरण 20 का विश्लेषण
long val = 20; // बाइनरी: 0000...00010100 (बिट 2 और 4 सेट) double d = BitConverter.Int64BitsToDouble(val); // बिट्स 2 और 4 सेट होने का अर्थ: बहुत छोटा सबनॉर्मल संख्या // परिणाम: 9.88e-323 (double.MinValue के करीब)
उपयोग के मामले
- निम्न-स्तरीय बिट मैनिपुलेशन
- सीरियलाइज़ेशन/डिसीरियलाइज़ेशन जहां बिट्स संरक्षित रखने हों
- इंटरऑप नेटिव कोड के साथ (C/C++ यूनियन के समान)
- टेस्टिंग विशेष फ्लोटिंग-पॉइंट मान उत्पन्न करने के लिए
- हैशिंग/क्रिप्टोग्राफी जहां बिट पैटर्न मायने रखते हैं
पूरक मेथड: DoubleToInt64Bits
// राउंड-ट्रिप double original = 123.456; long bits = BitConverter.DoubleToInt64Bits(original); double restored = BitConverter.Int64BitsToDouble(bits); Console.WriteLine(original == restored); // True
मुख्य बिंदु
- मान नहीं बदलता - केवल बिट्स की व्याख्या बदलता है
- DoubleToInt64Bits() के साथ उलटा किया जा सकता है
- NaN, Infinity, सबनॉर्मल संख्याएं सभी संरक्षित रहती हैं
- Endianness: सिस्टम के एंडियननेस का उपयोग करता (आमतौर पर लिटिल-एंडियन)
- प्रदर्शन: बहुत तेज (सिर्फ बिट रीइंटरप्रिटेशन)