Language Basics C#

/*
C# Programming Tips & Techniques
by Charles Wright, Kris Jamsa
Publisher: Osborne/McGraw-Hill (December 28, 2001)
ISBN: 0072193794
*/
namespace nsBitwise
{
    using System;
    public class Bitwise123
    {
        static public void Main ()
        {
            ushort x = 15542;
            ushort y = 21845;
            Console.Write ("x = {0} = ", x);
            ShowBits (x);
            Console.Write ("\r\ny = {0} = ", y);
            ShowBits (y);
            ushort result = (ushort) (x & y);
            Console.Write ("\r\nx & y     = ");
            ShowBits (result);
            Console.WriteLine (" = " + result);
            Console.Write ("\r\nx = {0} = ", x);
            ShowBits (x);
            Console.Write ("\r\ny = {0} = ", y);
            ShowBits (y);
            result = (ushort) (x | y);
            Console.Write ("\r\nx | y     = ");
            ShowBits (result);
            Console.WriteLine (" = " + result);
            Console.Write ("\r\nx = {0} = ", x);
            ShowBits (x);
            Console.Write ("\r\ny = {0} = ", y);
            ShowBits (y);
            result = (ushort) (x ^ y);
            Console.Write ("\r\nx ^ y     = ");
            ShowBits (result);
            Console.WriteLine (" = " + result);
        }
        static void ShowBits (ushort x)
        {
            int size;
            unsafe
            {
                size = sizeof (short) * 8;
            }
            for (int i = size - 1; i >= 0; --i)
            {
                Console.Write ((x >> i) & 1);
                if ((i % 4) == 0)
                    Console.Write (' ');
            }
        }
    }
}