OnesComplement Operator

# BigInteger.OnesComplement Operator

Visual Studio 2010

Returns the bitwise one's complement of a BigInteger value.

Namespace:  System.Numerics
Assembly:  System.Numerics (in System.Numerics.dll)

## Syntax

```public static BigInteger operator ~(
BigInteger value
)
```

#### Parameters

value
Type: System.Numerics.BigInteger
An integer value.

#### Return Value

Type: System.Numerics.BigInteger
The bitwise one's complement of value.

## Remarks

The OnesComplement method defines the operation of the bitwise one's complement operator for BigInteger values. The bitwise one's complement operator reverses each bit in a numeric value. That is, bits in value that are 0 are set to 1 in the result, and bits that are 1 are set to 0 in the result. The OnesComplement method enables code such as the following:

```
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

```

Languages that do not support custom operators may be able to call the OnesComplement method directly to perform a bitwise one's complement operation. For example:

```
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

```

Supported in: 4

Supported in: 4

## Platforms

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.