public static eeNumber RShift(eeNumber num1, eeNumber num2) { if (num1.IsFrac() || num2.IsFrac()) { throw new Exception("Cannot shift a non-int or by a non-int"); } List <bool> bin1 = num1.ToBinary(); for (eeNumber i = ZERO.Copy(); i < num2; i += ONE) { bin1.RemoveAt(bin1.Count() - 1); } return(FromBinary(bin1.ToArray())); }
public static eeNumber LShift(eeNumber num1, eeNumber num2) { if (num1.IsFrac() || num2.IsFrac()) { throw new Exception("Cannot shift a non-int or by a non-int"); } List <bool> bin1 = num1.ToBinary(); // trim the tail //for (eeNumber i = ZERO.Copy(); i < num2; i += ONE) // bin1.RemoveAt(bin1.Count() - 1); // add to the front for (eeNumber i = ZERO.Copy(); i < num2; i += ONE) { bin1.Add(false); } return(FromBinary(bin1.ToArray())); }