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('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.
Пример:
-
099271
------
981492
Если отрицательное число получается на последнем байте последний байт вычисляется по общим правилам, а из нулевого байта Суммы вычитается 1.
Результат работы функции:
@em.byte.dev('9987Y5','-273') & !@ '998432'
@em.byte.dev('999999','6273') & !@ '993726'
@em.byte.dev('998705','5773') & !@ '992932'
Aleks Versus'Easy Libraries'2013-2025
Aleks Versus'Game Adventure Making'Really Unimaginable Stories'2013-2025