// Overload binary + for int + Nybble.
        public static Nybble operator +(int op1, Nybble op2)
        {
            Nybble result = new Nybble();

            result.val = op1 + op2.val;

            result.val = result.val & 0xF; // retain lower 4 bits

            return(result);
        }
        public static void Main()
        {
            Nybble a = new Nybble(1);
            Nybble b = new Nybble(10);
            Nybble c = new Nybble();
            int    t;

            Console.WriteLine("a: " + (int)a);
            Console.WriteLine("b: " + (int)b);

            // use a Nybble in an if statement
            if (a < b)
            {
                Console.WriteLine("a is less than b\n");
            }

            // Add two Nybbles together
            c = a + b;
            Console.WriteLine("c after c = a + b: " + (int)c);

            // Add an int to a Nybble
            a += 5;
            Console.WriteLine("a after a += 5: " + (int)a);

            Console.WriteLine();

            // use a Nybble in an int expression
            t = a * 2 + 3;
            Console.WriteLine("Result of a * 2 + 3: " + t);

            Console.WriteLine();

            // illustrate int assignment and overflow
            a = 19;
            Console.WriteLine("Result of a = 19: " + (int)a);

            Console.WriteLine();

            // use a Nybble to control a loop
            Console.WriteLine("Control a for loop with a Nybble.");
            for (a = 0; a < 10; a++)
            {
                Console.Write((int)a + " ");
            }

            Console.WriteLine();
        }
 public static string toHex(Nybble val, bool prefix = true)
 {
     return(toHex(((int)val), prefix));
 }