Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 64비트 부호 있는 정수를 배정밀도 부동 소수점 숫자로 재해석하는 방법

C#에서 지정된 64비트 부호 있는 정수(long)를 배정밀도 부동 소수점 숫자(double)로 재해석하려면 BitConverter.Int64BitsToDouble() 메서드를 사용합니다.

이 메서드는 정수의 비트 패턴을 그대로 유지한 채 이를 double 값으로 해석합니다. 즉, 실제 수치 변환이 아니라 메모리상의 비트 표현을 다른 자료형의 관점에서 읽어들이는 방식입니다.

주요 특징

  • 매개변수로 64비트 부호 있는 정수(long)를 받습니다.
  • 반환값은 해당 비트 패턴을 해석한 배정밀도 부동 소수점 숫자(double)입니다.
  • IEEE 754 배정밀도 부동 소수점 표준에 따라 비트가 해석됩니다.

예제 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

참고 사항

출력 결과에서 볼 수 있듯이, 작은 정수 값을 그대로 double 비트로 해석하면 지수부가 매우 작아 극히 작은 비정규화(subnormal) 숫자가 됩니다. 반대로 BitConverter.DoubleToInt64Bits() 메서드를 사용하면 double 값을 다시 64비트 정수로 되돌릴 수 있으므로, 두 메서드는 서로 역변환 관계에 있습니다.