BigInteger.OnesComplement(BigInteger) Operátor

Definice

Vrátí bitový doplněk BigInteger hodnoty.

public:
 static System::Numerics::BigInteger operator ~(System::Numerics::BigInteger value);
public:
 static System::Numerics::BigInteger operator ~(System::Numerics::BigInteger value) = System::Numerics::IBitwiseOperators<System::Numerics::BigInteger, System::Numerics::BigInteger, System::Numerics::BigInteger>::op_OnesComplement;
public static System.Numerics.BigInteger operator ~ (System.Numerics.BigInteger value);
static member op_OnesComplement : System.Numerics.BigInteger -> System.Numerics.BigInteger
Public Shared Operator Not (value As BigInteger) As BigInteger

Parametry

value
BigInteger

Celočíselná hodnota.

Návraty

Bitový doplněk valuemetody .

Implementuje

Poznámky

Metoda OnesComplement definuje operaci bitového operátoru doplňku pro BigInteger hodnoty. Bitový operátor doplňku obrátí každý bit v číselné hodnotě. To znamená, že bity v value souboru, které jsou 0, jsou ve výsledku nastaveny na 1 a bity, které jsou 1, jsou ve výsledku nastaveny na 0. Metoda OnesComplement povolí kód, například následující:

using System;
using System.Numerics;

public class Example
{
   public static void Main()
   {
      BigInteger value, complement;

      value = BigInteger.Multiply(BigInteger.One, 9);
      complement = ~value;

      Console.WriteLine("{0,5} -- {1,-32}", value, DisplayInBinary(value));
      Console.WriteLine("{0,5} -- {1,-32}\n", complement, DisplayInBinary(complement));

      value = BigInteger.MinusOne * SByte.MaxValue;
      complement = ~value;

      Console.WriteLine("{0,5} -- {1,-32}", value, DisplayInBinary(value));
      Console.WriteLine("{0,5} -- {1,-32}\n", complement, DisplayInBinary(complement));
   }

   private static string DisplayInBinary(BigInteger number)
   {
      byte[] bytes = number.ToByteArray();
      string binaryString = string.Empty;
      foreach (byte byteValue in bytes)
      {
         string byteString = Convert.ToString(byteValue, 2).Trim();
         binaryString += byteString.Insert(0, new string('0', 8 - byteString.Length));
      }
      return binaryString;
   }
}
// The example displays the following output:
//           9 -- 00001001
//         -10 -- 11110110
//
//        -127 -- 10000001
//         126 -- 01111110
Imports System.Numerics

Module Example
   Public Sub Main()
      Dim value, complement As bigInteger
      
      value = BigInteger.Multiply(BigInteger.One, 9)
      complement = Not value
      
      Console.WriteLine("{0,5} -- {1,-32}", value, DisplayInBinary(value))
      Console.WriteLine("{0,5} -- {1,-32}", complement, DisplayInBinary(complement))
      Console.WriteLine()
   
      value = BigInteger.MinusOne * SByte.MaxValue
      complement = BigInteger.op_OnesComplement(value)
      
      Console.WriteLine("{0,5} -- {1,-32}", value, DisplayInBinary(value))
      Console.WriteLine("{0,5} -- {1,-32}", complement, DisplayInBinary(complement))
      Console.WriteLine()
   End Sub

   Private Function DisplayInBinary(number As BigInteger) As String
      Dim bytes() As Byte = number.ToByteArray()  
      Dim binaryString As String = String.Empty
      For Each byteValue As Byte In bytes
         Dim byteString As String = Convert.ToString(byteValue, 2).Trim()
         binaryString += byteString.Insert(0, New String("0"c, 8 - byteString.Length))
      Next
      Return binaryString    
   End Function
End Module
' The example displays the following output:
'           9 -- 00001001
'         -10 -- 11110110
'       
'        -127 -- 10000001
'         126 -- 01111110

Jazyky, které nepodporují vlastní operátory, mohou být schopny volat metodu OnesComplement přímo k provedení bitové operace doplňku. Příklad:

Imports System.Numerics

Module Example
   Public Sub Main()
      Dim value, complement As bigInteger
      
      value = BigInteger.Multiply(BigInteger.One, 9)
      complement = BigInteger.op_OnesComplement(value)
      
      Console.WriteLine("{0,5} -- {1,-32}", value, DisplayInBinary(value))
      Console.WriteLine("{0,5} -- {1,-32}", complement, DisplayInBinary(complement))
      Console.WriteLine()
   
      value = BigInteger.MinusOne * SByte.MaxValue
      complement = BigInteger.op_OnesComplement(value)
      
      Console.WriteLine("{0,5} -- {1,-32}", value, DisplayInBinary(value))
      Console.WriteLine("{0,5} -- {1,-32}", complement, DisplayInBinary(complement))
      Console.WriteLine()
   End Sub

   Private Function DisplayInBinary(number As BigInteger) As String
      Dim bytes() As Byte = number.ToByteArray()  
      Dim binaryString As String = String.Empty
      For Each byteValue As Byte In bytes
         Dim byteString As String = Convert.ToString(byteValue, 2).Trim()
         binaryString += byteString.Insert(0, New String("0"c, 8 - byteString.Length))
      Next
      Return binaryString    
   End Function
End Module
' The example displays the following output:
'           9 -- 00001001
'         -10 -- 11110110
'       
'        -127 -- 10000001
'         126 -- 01111110

Platí pro