По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) пример сложения целых положительных чисел используя битовые операции:
Функция Сложение2ЦелыхЧисел(Знач Число1, Знач Число2)
Результат = ПобитовоеИсключительноеИли(Число1,Число2);
С = ПобитовыйСдвигВлево(ПобитовоеИ(Число1,Число2),1);
Пока С <> 0 Цикл
Т = Результат;
Результат = ПобитовоеИсключительноеИли(Результат,С);
С = ПобитовыйСдвигВлево(ПобитовоеИ(Т,С),1);
КонецЦикла;
Возврат Результат;
КонецФункции Показать
(17)
Не работает для чисел больше 10^10
Функция Сложение2ЦелыхЧисел(Знач Число1, Знач Число2)
Результат = ПобитовоеИсключительноеИли(Число1,Число2);
С = ПобитовыйСдвигВлево(ПобитовоеИ(Число1,Число2),1);
Пока С <> 0 Цикл
Т = Результат;
Результат = ПобитовоеИсключительноеИли(Результат,С);
С = ПобитовыйСдвигВлево(ПобитовоеИ(Т,С),1);
КонецЦикла;
Возврат Результат;
КонецФункции
Результат = ПобитовоеИсключительноеИли(Число1,Число2);
С = ПобитовыйСдвигВлево(ПобитовоеИ(Число1,Число2),1);
Пока С <> 0 Цикл
Т = Результат;
Результат = ПобитовоеИсключительноеИли(Результат,С);
С = ПобитовыйСдвигВлево(ПобитовоеИ(Т,С),1);
КонецЦикла;
Возврат Результат;
КонецФункции
Не работает для чисел больше 10^10
(17) Слишком много слов...
За неимением 1С дома делаю это на С++.
Функция С(А, Б)
Если Б Тогда
Возврат С( ПобитовоеИсключительноеИли( А , Б ), ПобитовыйСдвигВлево( ПобитовоеИ( А , Б ), 1 ) );
Иначе
Возврат А
КонецЕсли;
КонецФункции;
За неимением 1С дома делаю это на С++.
$ cat add.cpp
#include <stdio.h>
int C(int a, int b)
{
if(b) return C(a^b, (a&b)<<1); else return a;
}
int main()
{
printf("%i", C(20,19));
}
$ g++ add.cpp
$ ./a.out
39 Показать
Как один из вариантов.
Функция Задача(а,б) экспорт
перем с;
м=новый массив;
м.Добавить("с");
м.Добавить("=");
м.Добавить(а);
м.Добавить(Символ(43));
м.Добавить(б);
Выполнить(СтрСоединить(м));
возврат с;
КонецФункции
Показать
(42)Это потому что Вы считаете свое мнение правильным, но есть и другие мнения - просто так сложилось. мне за 25 лет с 1С ни разу не приходилось менять значения без третьей переменной. и напридумывал я за это время достаточно много разных решений и обошелся без знания решения этой задачи. Насчет мозгов - иногда встречается такой код, написанный спецом с мозгами, что плакать хочется. Надеюсь у Вас они есть, ну хотя бы для того что бы не развивать холивар.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот