Auf Englisch lesen

Freigeben über


Decimal.GetBits Methode

Definition

Überlädt

GetBits(Decimal)

Konvertiert den Wert einer angegebenen Instanz von Decimal in die entsprechende binäre Darstellung.

GetBits(Decimal, Span<Int32>)

Konvertiert den Wert einer angegebenen Instanz von Decimal in die entsprechende binäre Darstellung.

GetBits(Decimal)

Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs

Konvertiert den Wert einer angegebenen Instanz von Decimal in die entsprechende binäre Darstellung.

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

Parameter

d
Decimal

Der zu konvertierende Wert.

Gibt zurück

Int32[]

Ein Array von 32-Bit-Ganzzahlen mit Vorzeichen mit vier Elementen, die die binäre Darstellung von d enthalten.

Beispiele

Im folgenden Beispiel wird die GetBits -Methode verwendet, um mehrere Decimal Werte in die entsprechenden binären Darstellungen zu konvertieren. Anschließend werden die Dezimalwerte und der Hexadezimalwert der Elemente in dem von der GetBits -Methode zurückgegebenen Array angezeigt.

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

Im folgenden Beispiel wird die GetBits -Methode verwendet, um die Komponententeile eines Arrays abzurufen. Anschließend wird dieses Array im Aufruf des Decimal(Int32, Int32, Int32, Boolean, Byte) Konstruktors verwendet, um einen neuen Decimal Wert zu instanziieren.

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

Hinweise

Die binäre Darstellung einer Decimal Zahl besteht aus einem 1-Bit-Zeichen, einer ganzzahligen Zahl von 96 Bit und einem Skalierungsfaktor, der verwendet wird, um die ganzzahlige Zahl zu dividieren und anzugeben, welcher Teil davon ein Dezimalbruch ist. Der Skalierungsfaktor ist implizit die Zahl 10, die auf einen Exponenten von 0 bis 28 erhöht wird.

Der Rückgabewert ist ein Array mit vier Elementen mit 32-Bit-Ganzzahlen mit Vorzeichen.

Das erste, zweite und dritte Element des zurückgegebenen Arrays enthalten die niedrigen, mittleren und hohen 32 Bits der ganzzahligen 96-Bit-Zahl.

Das vierte Element des zurückgegebenen Arrays enthält den Skalierungsfaktor und das Vorzeichen. Es besteht aus den folgenden Teilen:

Die Bits 0 bis 15, das untere Wort, sind nicht verwendet und müssen null sein.

Die Bits 16 bis 23 müssen einen Exponenten zwischen 0 und 28 enthalten, der die Leistung von 10 angibt, um die ganze Zahl zu teilen.

Die Bits 24 bis 30 werden nicht verwendet und müssen 0 sein.

Bit 31 enthält das Zeichen: 0 mittel positiv und 1 bedeutet negativ.

Beachten Sie, dass die Bitdarstellung zwischen negativer und positiver Null unterscheidet. Diese Werte werden in allen Vorgängen als gleich behandelt.

Weitere Informationen

Gilt für:

.NET 10 und andere Versionen
Produkt Versionen
.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>)

Quelle:
Decimal.cs
Quelle:
Decimal.cs
Quelle:
Decimal.cs

Konvertiert den Wert einer angegebenen Instanz von Decimal in die entsprechende binäre Darstellung.

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

Parameter

d
Decimal

Der zu konvertierende Wert.

destination
Span<Int32>

Die Spanne, in der die Binärdarstellung mit vier ganzen Zahlen gespeichert werden soll.

Gibt zurück

4, wobei es sich um die Anzahl von ganzen Zahlen in der Binärdarstellung handelt.

Ausnahmen

Die Zielspanne war nicht lang genug, um die Binärdarstellung zu speichern.

Gilt für:

.NET 10 und andere Versionen
Produkt Versionen
.NET 5, 6, 7, 8, 9, 10