0
dave2000
23.01.15
✎
18:03
|
Например, есть массив чисел 0..255, нужно их инвертировать, наподобии наподобии операции NOT с двоичным числом. Например, есть число 8, в дыоичной системе это будет 00001000 (1 байт), иверсия этого числа будет 11110111, в десятичной системе это будет 247.
Есть ли способы сделать это быстрее и красивее, чем программно переводить в "0" и "1", инвертировать их, а потом опять переводить в десятичную?
|
|
8
dave2000
23.01.15
✎
18:24
|
Кстати, перевод в любую систему из 10-тичной:
// Функия переводит число переданное в параметре
// Значение в строку (либо число) в системе счисления X
// X определяется линой шаблона, представление знаков разрядов
// значение шаблона, где сивол шаблона[k] - есть представление
// Например если шаблок "01", то перевод будет осуществлен в двоичную
// систему счисления, если "01234567", то в восьмиричную
// если "0123456789ABCDEF", то в шестнадцатиричную
// если "ЛИ", то в двоичную, где 0 представлен буквой Л, а 1 буквой И
// вариант шаблона:
// "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwzyzАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя!@#$%^&*()_-=+{}[]\|/,.:;'""><"
// представит Значение в сто пятидесятишести ричной системе счисления,
// где соответствующий символ шаблона означает соответствующую цифру разряда
Функция Из_Число_В_XСчисл(Знач Значение, Шаблон)
Результат="";
Основание = СтрДлина(Шаблон);
Пока Значение>0 цикл
Остат = Значение%Основание;
Результат1=Сред(Шаблон,Остат+1,1);
Значение = (Значение-Остат)/Основание;
Результат = Результат1 + Результат;
КонецЦикла;
Возврат Результат;
КонецФункции
Перевод из любой системы в 10-чную:
|
|