İngilizce dilinde oku

Aracılığıyla paylaş


Decimal.GetBits Yöntem

Tanım

Aşırı Yüklemeler

GetBits(Decimal)

Belirtilen Decimal örneğinin değerini eşdeğer ikili gösterimine dönüştürür.

GetBits(Decimal, Span<Int32>)

Belirtilen Decimal örneğinin değerini eşdeğer ikili gösterimine dönüştürür.

GetBits(Decimal)

Kaynak:
Decimal.cs
Kaynak:
Decimal.cs
Kaynak:
Decimal.cs

Belirtilen Decimal örneğinin değerini eşdeğer ikili gösterimine dönüştürür.

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

Parametreler

d
Decimal

Dönüştürülecek değer.

Döndürülenler

Int32[]

öğesinin ikili gösterimini diçeren dört öğeye sahip 32 bit imzalı tamsayı dizisi.

Örnekler

Aşağıdaki örnek, GetBits çeşitli Decimal değerleri eşdeğer ikili gösterimlerine dönüştürmek için yöntemini kullanır. Ardından, yöntemi tarafından GetBits döndürülen dizideki öğelerin ondalık değerlerini ve onaltılık değerini görüntüler.

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

Aşağıdaki örnek, bir dizinin bileşen parçalarını almak için yöntemini kullanır GetBits . Daha sonra yeni Decimal bir değer örneği oluşturmak için oluşturucu çağrısında Decimal(Int32, Int32, Int32, Boolean, Byte) bu diziyi kullanır.

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

Açıklamalar

Bir Decimal sayının ikili gösterimi 1 bit işaretinden, 96 bitlik bir tamsayı sayısından ve tamsayıyı bölmek ve hangi bölümünün ondalık kesir olduğunu belirtmek için kullanılan ölçeklendirme faktöründen oluşur. Ölçeklendirme faktörü örtük olarak 10 sayısıdır ve 0 ile 28 arasında bir üs oluşturur.

Dönüş değeri, 32 bit işaretli tamsayılardan oluşan dört öğeli bir dizidir.

Döndürülen dizinin birinci, ikinci ve üçüncü öğeleri, 96 bit tamsayı sayısının düşük, orta ve yüksek 32 bitlerini içerir.

Döndürülen dizinin dördüncü öğesi ölçek faktörünü ve işaretini içerir. Aşağıdaki bölümlerden oluşur:

Küçük sözcük olan 0 ile 15 arasında bitler kullanılmaz ve sıfır olmalıdır.

16 ile 23 arasındaki bitler, tamsayıyı bölmek için 10'un gücünü gösteren 0 ile 28 arasında bir üs içermelidir.

24 - 30 bitleri kullanılmaz ve sıfır olmalıdır.

Bit 31 işareti içerir: 0 ortalama pozitif ve 1 negatif anlamına gelir.

Bit gösteriminin negatif ve pozitif sıfır arasında ayrım yaptığı unutmayın. Bu değerler tüm işlemlerde eşit olarak değerlendirilir.

Ayrıca bkz.

Şunlara uygulanır

.NET 10 ve diğer sürümler
Ürün Sürümler
.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>)

Kaynak:
Decimal.cs
Kaynak:
Decimal.cs
Kaynak:
Decimal.cs

Belirtilen Decimal örneğinin değerini eşdeğer ikili gösterimine dönüştürür.

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

Parametreler

d
Decimal

Dönüştürülecek değer.

destination
Span<Int32>

Dört tamsayı ikili gösteriminin depolandığı yayılma alanı.

Döndürülenler

4, ikili gösterimdeki tamsayıların sayısıdır.

Özel durumlar

Hedef yayılma alanı, ikili gösterimi depolamak için yeterince uzun değildi.

Şunlara uygulanır

.NET 10 ve diğer sürümler
Ürün Sürümler
.NET 5, 6, 7, 8, 9, 10