Функция выполняет логическое сложение двух чисел. Вернее сказать сложение с переполнением. Складывать можно два числа абсолютно любой длины (ограничения для числовых значений аргументов связаны с ограничением на значения переменных для вашего плеера).
$args[0] - первое число (сколько угодно длинное), можно args[0] (ограниченное значение).
$args[1] - второе число (сколько угодно длинное), можно args[1] (ограниченное значение).
Любой посторонний символ интерпретируется, как 0 (нуль). Т.е. суммируются только целые положительные числа.
Использует функцию #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
Результатом работы функции является слово Сумма. Это текстовая запись числа без потери разрядов. Т.е. если были два числа: из пяти символов и из двух символов, - результат обязательно будет состоять из пяти символов.
$func('#add#',998765,273) = 999038
$func('#add#','9987Y5','-273') = 998978
$func('#add#','999999','6273') = 006273
$func('#add#','998705','5773') = 004479
$args[0] - уменьшаемое (любой длины), можно args[0] (ограниченное значение).
$args[1] - вычитаемое (любой длины), можно args[1] (ограниченное значение).
Результат - текстовое значение (слово Сумма) без потери разрядов.
Использует функцию #zero#.
логическое вычитание. Вычитает из одного числа другое. Оба числа приводятся к одной длине по аналогии с #add#.
Далее происходит поразрядное вычитание. Причём если в результате получается отрицательное число в байт записывается 10+число, в следующий разряд переносится -1
Пример:
990763
-
099271
------
981492
Если отрицательное число получается на последнем байте последний байт вычисляется по общим правилам, а из нулевого байта Суммы вычитается 1.
$func('#dev#',998765,273) = 998492
$func('#dev#','9987Y5','-273') = 998432
$func('#dev#','999999','6273') = 993726
$func('#dev#','998705','5773') = 992932
Процедура меняет местами значение двух переменных.
$args[0] - имя первой переменной
$args[1] - имя второй переменной
Пример использования:
a=6
b=9
gosub '#rtp#','a','b'
a
b
$c[0]='citated'
$d[19]='legated'
gosub '#rtp#','$c[0]','$d[19]'
$c[0]
$d[19]
9
6
legated
citated
Aleks Versus'Easy Libraries'2013
Aleks Versus'Game Adventure Making'Really Unimaginable Stories'2013