Системы счисления

13.06.15

Разработка - Математика и алгоритмы

Обработка для перевода из одной системы счисления в другую

Скачать файлы

Наименование Файл Версия Размер
Системы счисления
.erf 7,84Kb
4
.erf 1.0 7,84Kb 4 Скачать

Обработка на управляемых формах позволяет перевести число из системы счисления 1<N<37 в систему 1<M<37.

Алгоритм преобразования чисел можно найти здесь. Сначала число переводится из N-разрядной системы в десятичную, потом из десятичной в М-разрядную. 

Системы счисления

См. также

Метод Дугласа-Пойкера для эффективного хранения метрик

Математика и алгоритмы Платформа 1C v8.2 Конфигурации 1cv8 Россия Абонемент ($m)

На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.

1 стартмани

30.01.2024    1756    stopa85    12    

33

Алгоритм симплекс-метода для решения задачи раскроя

Математика и алгоритмы Бесплатно (free)

Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.

19.10.2023    4430    user1959478    50    

34

Регулярные выражения на 1С

Математика и алгоритмы Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Россия Абонемент ($m)

Что ж... лучше поздно, чем никогда. Подсистема 1С для работы с регулярными выражениями: разбор выражения, проверка на соответствие шаблону, поиск вхождений в тексте.

1 стартмани

09.06.2023    7468    4    SpaceOfMyHead    17    

56

Модель распределения суммы по базе

Математика и алгоритмы Платформа 1С v8.3 Россия Абонемент ($m)

Обычно под распределением понимают определение сумм пропорционально коэффициентам. Предлагаю включить сюда также распределение по порядку (FIFO, LIFO) и повысить уровень размерности до 2-х. 1-ое означает, что распределение может быть не только пропорциональным, но и по порядку, а 2-ое - это вариант реализации матричного распределения: по строкам и столбцам. Возможно вас заинтересует также необычное решение этой задачи через создание DSL на базе реализации текучего интерфейса

1 стартмани

21.03.2022    7856    7    kalyaka    11    

44

Изменения формата файлов конфигурации (CF) в 8.3.16

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    4448    fishca    13    

36

Интересная задача на Yandex cup 2021

Математика и алгоритмы Бесплатно (free)

Мое решение задачи на Yandex cup 2021 (frontend). Лабиринт. JavaScript.

12.10.2021    8846    John_d    73    

46

Механизм анализа данных. Кластеризация.

Математика и алгоритмы Анализ учета Платформа 1С v8.3 Анализ и прогнозирование Бесплатно (free)

Подробный разбор, с примером использования, встроенного механизма кластеризации 1С.

31.08.2021    7813    dusha0020    8    

70
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Идальго 226 13.06.15 10:32 Сейчас в теме
Было уже вроде что-такое. Вот тут н-р вроде есть обе функции http://www.forum.mista.ru/topic.php?id=560858
2. ediks 335 15.06.15 11:43 Сейчас в теме
Размерность системы счЕсления М: 16 - как-то не совсем аккуратно.
3. eugeniezheludkov 43 16.06.15 03:23 Сейчас в теме
а я для кодирования актуальности ценников кодировал ШК(артикул с ценой) в base58 (для уменьшения размера ШК) в формате bitcoin с проверкой КС вот такими самопальными функциями, если в алгоритме base58 поменять строку символов на другую с другой длиной то будет любая система счисления декодер/энкодер преобразующий в массив байт и просто в число
Функция ПолучитьНибл(Ч)
	Возврат Сред("0123456789abcdef",1+Ч%16,1);
КонецФункции

Функция Byte2Hex(с)
	 Возврат ПолучитьНибл(с/16) + ПолучитьНибл(с);
КонецФункции

Функция Array2Hex(МассивБайт, Разделитель = "")
	Стр = "";
	Для Каждого	Байт из МассивБайт Цикл
		Стр = Стр + Byte2Hex(Байт) + Разделитель;
	КонецЦикла;	
	Возврат Стр;
КонецФункции
//bits
Функция УстановитьБит(ч, НомерБита) Экспорт
	Если Не СчитатьБит(ч, НомерБита) Тогда	
		ч = ч + pow(2, НомерБита);
	КонецЕсли;
	Возврат ч;	
КонецФункции
//устанавливаем бит в 0
Функция СброситьБит(ч, НомерБита) Экспорт
	если СчитатьБит(ч, НомерБита) Тогда	
		ч = ч - pow(2, НомерБита);
	КонецЕсли;
	Возврат ч;	
КонецФункции
//если бит 1 тогда истина иначе ложь	
Функция СчитатьБит(ч, НомерБита) экспорт
	Возврат Цел((ч%pow(2, НомерБита+1))/pow(2, НомерБита)) = 1;
КонецФункции
//Base58
Функция Base58Encode(знач х) Экспорт
	Если х = 0 Тогда Возврат "11"; КонецЕсли;
	Симв = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"­;//	bitcoin base58 encode 
	Стр = "";
	Base = СтрДлина(Симв);
	Пока х > 0 Цикл
		б = х % Base;
		Стр = Сред(Симв, б+1, 1) + Стр;
		х = Цел(х/Base);
	КонецЦикла;
	Возврат Стр;	
КонецФункции

функция Base58Decode(Стр) Экспорт
	Симв = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"­ ; //	bitcoin base58 encode 
	Base = СтрДлина(Симв);
	Стр = СокрЛП(Стр);
	д = СтрДлина(Стр);
	х = 0;
	Для н = 1 По д Цикл
		б = Найти(Симв, Сред(Стр, н, 1));
		х = (х * Base) + ?(б <= 0, 0, б - 1); //все спецсимволы или нераспознанные интерпретируем как 0
	КонецЦикла;
	Возврат х;	
КонецФункции

Функция Array2Base58(Array)
	РезультатБольшоеЧисло = 0;
	Для Каждого ЧислоМассива из Array Цикл
		РезультатБольшоеЧисло = РезультатБольшоеЧисло * 256 + ЧислоМассива%256;
	КонецЦикла;
	Возврат ?(Array[0] = 0 ,"1","")+Base58Encode(РезультатБольшоеЧисло);	
КонецФункции

Функция Base58Array(Число58)
	МассивБайт = Новый Массив();
	РезультатБольшоеЧисло = Base58Decode(Число58);
	Base = 256;
	Пока РезультатБольшоеЧисло > 0 Цикл
		Байт = РезультатБольшоеЧисло % Base;
		МассивБайт.Добавить(Байт);
		РезультатБольшоеЧисло = Цел(РезультатБольшоеЧисло/Base);
	КонецЦикла;
	Если Лев(Число58,1) = "1" Тогда МассивБайт.Добавить(0); КонецЕсли;
	Максимум = МассивБайт.ВГраница();
	Для Итератор = 0 По Максимум/2 Цикл
		Байт = МассивБайт[Максимум - Итератор];
		МассивБайт.Установить(Максимум - Итератор, МассивБайт[Итератор]);
		МассивБайт.Установить(Итератор, Байт);
	КонецЦикла;
	Возврат МассивБайт;
КонецФункции

Функция ПолучитьХэш256(МассивБайт)
Показать
Оставьте свое сообщение