/// <summary> /// Конструктор класса /// </summary> /// <param name="reversBinaryNumber">Бинарное число в обратном коде</param> public AdditionalBinaryNumber(ReversBinaryNumber reversBinaryNumber) { if (reversBinaryNumber.Sign() == '0') this._code = reversBinaryNumber.Code; else { this._code = reversBinaryNumber.Code; Increment(); } }
/// <summary> /// Сложение бинарного числа в обратном коде с бинарным числом в обратном коде /// </summary> /// <param name="number">Число, которое прибавляется к данному</param> /// <returns>При переполнении возвращает false, иначе true</returns> public override bool Add(ReversBinaryNumber number) { int transfer = 0; char[] result = Additional(this._code, number.Code, out transfer);//Если был перенос, transfer = 1 if (transfer == 1) result = Additional(result, new ReversBinaryNumber(1).Code, out transfer);//прибавляем единицу к младшему разряду bool hasOv = hasOverflow(this.Sign(), number.Sign(), result[0]); if (!hasOv)//или добавить выброс исключения при переполнении _code = result; return !hasOv; }