C# - tilde (~) operator

In C#, the tilde ~ operator is known as the bitwise complement operator. It inverts the bit pattern of its operand; that is, every bit that is 0 becomes 1, and every bit that is 1 becomes 0. This operator is commonly used in low-level programming, like bit manipulation tasks.

Here's a simple example to illustrate the usage of tilde ~ operator. We'll create a program that takes an integer, applies the bitwise complement operator, and then displays both the original and the resulting numbers:


using System;

class BitwiseComplementExample
{
    static void Main()
    {
        // Original number
        int originalNumber = 12; // Binary: 1100

        // Applying the bitwise complement operator
        int complementedNumber = ~originalNumber; 

        // Displaying results
        Console.WriteLine("Original Number: " + originalNumber); // Outputs 12
        Console.WriteLine("Complemented Number: " + complementedNumber); // Outputs -13
    }
}
	

In this example, the number 12 in binary is 1100. When we apply the bitwise complement, every bit is inverted, so 1100 becomes 0011. However, C# uses two's complement to represent negative numbers. The first bit (from the left) is the sign bit, where 0 represents a positive number and 1 represents a negative number. When 0011 is interpreted as a two's complement number, it represents -13.

Therefore, the output of this program will be:


        Original Number: 12
        Complemented Number: -13

This example highlights how the tilde operator changes each bit of the number, leading to a result that might initially seem counterintuitive, especially when dealing with the two's complement representation of negative numbers in C#.

Points to Remember:
  1. Bitwise Inversion: The tilde (~) operator in C# is a bitwise complement operator that inverts each bit of its operand.
  2. Two's Complement System: C# uses the two's complement system for negative numbers, which affects the result of the tilde operator.
  3. Changing Sign: The tilde operator typically converts a positive number to a negative number and vice versa.
  4. Data Types: It is used with integral data types like int, long, byte, etc.
  5. Use in Bit Manipulation: This operator is useful in low-level programming for tasks like creating masks or working with binary data.
  6. Not for Decimal Types: The tilde operator does not apply to floating-point types like float or double.
  7. Impact on High-order Bit: It can flip the high-order bit of a binary number, changing the number's value significantly.
  8. Utility in Algorithms: Sometimes used in algorithms for binary operations, cryptography, and data compression.
  9. Combination with Other Operators: Can be combined with other bitwise operators for complex bit manipulation.
  10. Syntax: Simple to use with a tilde symbol followed by the variable or value.