Имя: Пароль:
1C
1С v8
Инвертирование десятичного числа (наподобии операции NOT с двоичным числом)..
0 dave2000
 
23.01.15
18:03
Например, есть массив чисел 0..255, нужно их инвертировать, наподобии наподобии операции NOT с двоичным числом. Например, есть число 8, в дыоичной системе это будет 00001000 (1 байт), иверсия этого числа будет 11110111, в десятичной системе это будет 247.

Есть ли способы сделать это быстрее и красивее, чем программно переводить в "0" и "1", инвертировать их, а потом опять переводить в десятичную?
1 mehfk
 
23.01.15
18:05
Напиши ВК
2 dave2000
 
23.01.15
18:05
Значения массива могут быть от 0..255, т.е. до максимального значения одного байта.
3 patapum
 
23.01.15
18:06
(0) 255-x
4 mehfk
 
23.01.15
18:06
А, стоп. У тебя диапазон чисел 0..255? Заведи массив заранее расчитаных значений.
5 dave2000
 
23.01.15
18:06
(1) прийдется писать, если не найду более простых решений
6 anatoly
 
23.01.15
18:08
если (2) - то однозначно (3) и без вопросов.
7 dave2000
 
23.01.15
18:21
(3) (6) Точно!

Но код видимо таки прийдется юзать, нужно будет выводить значения в 16-ричном виде.

Всем спасибо! :)
8 dave2000
 
23.01.15
18:24
Кстати, перевод в любую систему из 10-тичной:
http://infostart.ru/public/70053/

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


Перевод из любой системы в 10-чную:
http://infostart.ru/public/95428/