102 lines
2.5 KiB
C#
102 lines
2.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace BitwiseOperators
|
|
{
|
|
public enum SomeValues
|
|
{
|
|
Red = 1,
|
|
Blue = 2,
|
|
Green = 4,
|
|
Black = 8,
|
|
White = 16,
|
|
Orange = 32,
|
|
Yellow = 64,
|
|
Pink = 128,
|
|
}
|
|
|
|
class Program
|
|
{
|
|
static void Main(string[] args)
|
|
{
|
|
//
|
|
// Binary
|
|
//
|
|
|
|
//
|
|
// Bitwise operators
|
|
//
|
|
// And & (Both)
|
|
// Or | (Either)
|
|
// Xor ^ (Exclusive or, different)
|
|
// Not ~ (Invert)
|
|
//
|
|
|
|
byte a = 122;
|
|
byte b = 7;
|
|
|
|
byte result = (byte)(a & b);
|
|
|
|
//Console.WriteLine($"{ Convert.ToString(a, 2).PadLeft(8, '0')} &");
|
|
//Console.WriteLine($"{ Convert.ToString(b, 2).PadLeft(8, '0')}");
|
|
//Console.WriteLine($"--------");
|
|
//Console.WriteLine($"{ Convert.ToString(result, 2).PadLeft(8, '0')}");
|
|
//Console.WriteLine();
|
|
|
|
//
|
|
// Bitwise Shifting
|
|
//
|
|
// Left <<
|
|
// Right >>
|
|
//
|
|
|
|
|
|
//byte c = 25;
|
|
|
|
//var cResult = (byte)(c << 4);
|
|
|
|
//Console.WriteLine($"{ Convert.ToString(c, 2).PadLeft(8, '0')} << 1");
|
|
//Console.WriteLine($"--------");
|
|
//Console.WriteLine($"{ Convert.ToString(cResult, 2).PadLeft(8, '0')}");
|
|
|
|
|
|
// Usage
|
|
//
|
|
// Toggling boolean
|
|
// Enum flags
|
|
// Masking
|
|
//
|
|
|
|
// Invert booleans
|
|
var d = true;
|
|
d ^= true;
|
|
|
|
// Enum flags
|
|
var someVals = (byte)(SomeValues.Blue);
|
|
Console.WriteLine($"{ Convert.ToString((byte)someVals, 2).PadLeft(8, '0')}");
|
|
|
|
if ((someVals & (byte)SomeValues.Blue) == (byte)SomeValues.Blue)
|
|
Console.WriteLine("Blue was included");
|
|
if ((someVals & (byte)SomeValues.White) == (byte)SomeValues.White)
|
|
Console.WriteLine("White was included");
|
|
|
|
// Masking
|
|
//
|
|
// -----1- Input
|
|
// 0000010 < Important bit (the mask)
|
|
|
|
// 0000010
|
|
|
|
var input = (byte)(SomeValues.White | SomeValues.Blue);
|
|
var mask = (byte)SomeValues.Blue;
|
|
var r = input & mask;
|
|
|
|
|
|
Console.ReadLine();
|
|
}
|
|
}
|
|
}
|