Decimal.GetBits Metoda

Definicja

Przeciążenia

GetBits(Decimal)

Konwertuje wartość określonego wystąpienia Decimal na równoważną reprezentację binarną.

GetBits(Decimal, Span<Int32>)

Konwertuje wartość określonego wystąpienia Decimal na równoważną reprezentację binarną.

GetBits(Decimal)

Źródło:
Decimal.cs
Źródło:
Decimal.cs
Źródło:
Decimal.cs

Konwertuje wartość określonego wystąpienia Decimal na równoważną reprezentację binarną.

C#
public static int[] GetBits(decimal d);

Parametry

d
Decimal

Wartość do konwersji.

Zwraca

Int32[]

32-bitowa tablica całkowita ze znakiem z czterema elementami, które zawierają reprezentację binarną .d

Przykłady

W poniższym przykładzie użyto GetBits metody , aby przekonwertować kilka Decimal wartości na równoważne reprezentacje binarne. Następnie wyświetla wartości dziesiętne i wartość szesnastkowa elementów w tablicy zwróconej przez metodę GetBits .

C#
using System;

class Example
{
   public static void Main()
   {
      // Define an array of Decimal values.
      Decimal[] values = { 1M, 100000000000000M, 10000000000000000000000000000M,
                           100000000000000.00000000000000M, 1.0000000000000000000000000000M,
                           123456789M, 0.123456789M, 0.000000000123456789M,
                           0.000000000000000000123456789M, 4294967295M,
                           18446744073709551615M, Decimal.MaxValue,
                           Decimal.MinValue, -7.9228162514264337593543950335M };

      Console.WriteLine("{0,31}  {1,10:X8}{2,10:X8}{3,10:X8}{4,10:X8}",
                        "Argument", "Bits[3]", "Bits[2]", "Bits[1]",
                        "Bits[0]" );
      Console.WriteLine( "{0,31}  {1,10:X8}{2,10:X8}{3,10:X8}{4,10:X8}",
                         "--------", "-------", "-------", "-------",
                         "-------" );

      // Iterate each element and display its binary representation
      foreach (var value in values) {
        int[] bits = decimal.GetBits(value);
        Console.WriteLine("{0,31}  {1,10:X8}{2,10:X8}{3,10:X8}{4,10:X8}",
                          value, bits[3], bits[2], bits[1], bits[0]);
      }
   }
}
// The example displays the following output:
//                           Argument     Bits[3]   Bits[2]   Bits[1]   Bits[0]
//                           --------     -------   -------   -------   -------
//                                  1    00000000  00000000  00000000  00000001
//                    100000000000000    00000000  00000000  00005AF3  107A4000
//      10000000000000000000000000000    00000000  204FCE5E  3E250261  10000000
//     100000000000000.00000000000000    000E0000  204FCE5E  3E250261  10000000
//     1.0000000000000000000000000000    001C0000  204FCE5E  3E250261  10000000
//                          123456789    00000000  00000000  00000000  075BCD15
//                        0.123456789    00090000  00000000  00000000  075BCD15
//               0.000000000123456789    00120000  00000000  00000000  075BCD15
//      0.000000000000000000123456789    001B0000  00000000  00000000  075BCD15
//                         4294967295    00000000  00000000  00000000  FFFFFFFF
//               18446744073709551615    00000000  00000000  FFFFFFFF  FFFFFFFF
//      79228162514264337593543950335    00000000  FFFFFFFF  FFFFFFFF  FFFFFFFF
//     -79228162514264337593543950335    80000000  FFFFFFFF  FFFFFFFF  FFFFFFFF
//    -7.9228162514264337593543950335    801C0000  FFFFFFFF  FFFFFFFF  FFFFFFFF

W poniższym przykładzie użyto GetBits metody , aby pobrać części składowe tablicy. Następnie używa tej tablicy w wywołaniu do konstruktora Decimal(Int32, Int32, Int32, Boolean, Byte) , aby utworzyć wystąpienie nowej Decimal wartości.

C#
using System;

public class Example
{
   public static void Main()
   {
      Decimal[] values = { 1234.96m, -1234.96m };
      foreach (var value in values) {
         int[] parts = Decimal.GetBits(value);
         bool sign = (parts[3] & 0x80000000) != 0;

         byte scale = (byte) ((parts[3] >> 16) & 0x7F);
         Decimal newValue = new Decimal(parts[0], parts[1], parts[2], sign, scale);
         Console.WriteLine("{0} --> {1}", value, newValue);
      }
   }
}
// The example displays the following output:
//       1234.96 --> 1234.96
//       -1234.96 --> -1234.96

Uwagi

Reprezentacja Decimal binarna liczby składa się z znaku 1-bitowego, liczby całkowitej 96-bitowej oraz współczynnika skalowania używanego do dzielenia liczby całkowitej i określania, jaka część jest ułamkiem dziesiętnym. Współczynnik skalowania jest niejawnie liczbą 10 podniesioną do wykładnika z zakresu od 0 do 28.

Wartość zwracana jest tablicą czteroelementową z 32-bitowymi liczbami całkowitymi ze znakiem.

Pierwsze, drugie i trzecie elementy zwracanej tablicy zawierają małe, środkowe i wysokie 32 bity liczby całkowitej 96-bitowej.

Czwarty element zwracanej tablicy zawiera współczynnik skalowania i znak. Składa się z następujących części:

Bity od 0 do 15, dolne słowo, są nieużywane i muszą być zerowe.

Bity od 16 do 23 muszą zawierać wykładnik z zakresu od 0 do 28, co wskazuje moc 10, aby podzielić liczbę całkowitą.

Bity od 24 do 30 są nieużywane i muszą mieć wartość zero.

Bit 31 zawiera znak: 0 średnia dodatnia, a 1 oznacza ujemną.

Należy pamiętać, że reprezentacja bitów rozróżnia ujemne i dodatnie zero. Te wartości są traktowane jako równe we wszystkich operacjach.

Zobacz też

Dotyczy

.NET 10 i inne wersje
Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

GetBits(Decimal, Span<Int32>)

Źródło:
Decimal.cs
Źródło:
Decimal.cs
Źródło:
Decimal.cs

Konwertuje wartość określonego wystąpienia Decimal na równoważną reprezentację binarną.

C#
public static int GetBits(decimal d, Span<int> destination);

Parametry

d
Decimal

Wartość do konwersji.

destination
Span<Int32>

Zakres, w którym ma być przechowywana reprezentacja binarna z czterema liczbami całkowitymi.

Zwraca

4, czyli liczba liczb całkowitych w reprezentacji binarnej.

Wyjątki

Zakres docelowy nie był wystarczająco długi, aby przechowywać reprezentację binarną.

Dotyczy

.NET 10 i inne wersje
Produkt Wersje
.NET 5, 6, 7, 8, 9, 10