Вход
Приветствую Вас Гость
 

easy.math.qsp v. 3.1.0

Логические операции

em.byte.add

Функция выполняет побайтовое сложение двух чисел, с переполнением. Складывать можно два числа абсолютно любой длины (если используются числовые значения для аргументов, они должны укладываться в пределы от 0 до 2147483647).

$args[0] - первое число (сколько угодно длинное), можно  args[0] (ограниченное значение).
$args[1] - второе число (сколько угодно длинное), можно  args[1] (ограниченное значение).

Если один из рагументов содержит запрещённые символы, т.е. не является числом в строковом или числовом представлении, функция вернёт [not a number] в результат.

Использует функцию em.zero.

Суммирует два целых числа любой длины по следующим правилам:

  • Каждое число представляет собой запись из цифр. Цифры условно назовём байтами, само число - словом.
  • Количество байтов в одном слове может быть больше, чем в другом. В таком случае слово с меньшим количеством байтов приводится к длине слова с большим количеством байтов.

    Например 998765
    и           273
    273 приводится к длине 998765 добавлением недостающих байтов.
    273 ->   000273
  • Байты нумеруются справа налево! По разрядам, начиная с нулевого.

    слово       998765
    номер байта 543210
  • Слова суммируются побайтово (поразрядно), начиная с нулевого. Итог вычислений записывается в слово Сумма.
  • Если при суммировании байтов на одном разряде происходит переполнение, т.е. число оказывается больше одного разряда, лишний разряд переносится на следующий байт. Пример:

    998765
    +
    000273
    ------
    999038 : /5+3=8/6+7=13/2+7+1=10/8+1+0=9/9+0=9/9+0=9/
    999038 : /    8/     3/       0/      9/    9/    9/
  • В случае если переполнение происходит на суммировании последних байтов, лишний разряд переносится на нулевой байт Суммы. Пример:

     998765
     +     
     001273
     ------
    1000038 - слово Сумма
         +1
     ------
     000039 - итог. Слово Сумма. Будет записано в $result
  • Результатом работы функции является слово Сумма. Это текстовая запись числа без потери разрядов. Т.е. если были два числа: из пяти символов и из двух символов, - результат обязательно будет состоять из пяти символов.
Результат работы функции:
@em.byte.add(998765,273) & !@ '999038'
@em.byte.add('9987Y5','-273') & !@ '[not a number]'
@em.byte.add('999999','6273') & !@ '006273'
@em.byte.add('998705','5773') & !@ '004479'

em.byte.dev

$args[0] - уменьшаемое (любой длины), можно  args[0] (ограниченное значение).
$args[1] - вычитаемое (любой длины), можно  args[1] (ограниченное значение).

Результат - текстовое значение (слово Сумма) без потери разрядов.

Использует функцию em.zero.

Побайтовое вычитание. Вычитает из одного числа другое. Оба числа приводятся к одной длине по аналогии с em.byte.add.

Далее происходит поразрядное вычитание. Причём если в результате получается отрицательное число в байт записывается 10+число, в следующий разряд переносится -1.

Пример:

990763
-
099271
------
981492

Если отрицательное число получается на последнем байте последний байт вычисляется по общим правилам, а из нулевого байта Суммы вычитается 1.

Результат работы функции:
@em.byte.dev(998765,273) & !@ '998492'
@em.byte.dev('9987Y5','-273') & !@ '998432'
@em.byte.dev('999999','6273') & !@ '993726'
@em.byte.dev('998705','5773') & !@ '992932'
 

Aleks Versus'Easy Libraries'2013-

Aleks Versus'Game Adventure Making'Really Unimaginable Stories'2013-

Наверх