Files
Angel6/C# Beginners/BitwiseOperators/Program.cs
2017-05-29 21:01:07 +01:00

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();
}
}
}