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

easy.math.qsp v. 2.4.0

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

#add#

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

$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'

#dev#

$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'

#rtp#

Процедура меняет местами значение двух переменных.

$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
Наверх