public static BinaryNumber ShiftRight(this BinaryNumber x, BinaryNumber places)
 {
     var result = x;
     places.Repeat(() => result = result.Rest);
     return result;
 }
 public static BinaryNumber ShiftLeft(this BinaryNumber x, BinaryNumber places)
 {
     var result = x;
     places.Repeat(() => result = result.Double());
     return result;
 }