#0
by vogenut
Есть число от 0 до 255. Соответственно влезает в один байт. Надо узнать сколько в нем выставлено битов. Мысли есть?
#0
by vogenut
Есть число от 0 до 255. Соответственно влезает в один байт. Надо узнать сколько в нем выставлено битов. Мысли есть?
#5
by vogenut
Да нет. Есть определенное значение байта, надо узнать сколько бит для данного байта установлено.
#11
by vogenut
Возьмем число 1. Это в двоичном представлении 1, т.е. выставлен один бит. Число 2 в двоичном представлении равно 10, тоже один бит выставленным получается.
#18
by vogenut
Забыл сказать. Это должно работать быстро, т.к. такая функция будет вызываться очень много раз.
#21
by Snovy
Когда то на ВБ упаковывал 16 флажков в одно число. Все было настолько просто... помню, что в 7.7 такого функционала не было, в 8 тоже не нашли и забросили это дело. Упаковка через исключающее "или" и распаковка через "и" битовых операциях (или наоборот)
#28
by vogenut
Уже вариант. Но кажется, что будет медленно, функция сто тыщ миллионов будет вызываться.
#31
by romix
В 1С есть оператор % который дает остаток (хвостик) от деления. Делить на два таким способом 8 раз и выводить на экран хвостик - получится двоичное число (начиная с младшей цифры). Тут можно и единицы посчитать, и само двоичное число получить.
#33
by Raybek
Если нужно быстрее... Если числа только с 0 до 255, то запомни где-нибудь табличку соответствия Число-Кол-во 1.
#35
by Raybek
То бишь у тебя получится таблица соответвия с колонками "Число" и "Количество единиц". Или еще лучше массив, где индекс элемента - это число, а значение массива - это кол-во единиц. Тогда тупо вызваешь Массив[15]:)
#40
by Mikeware
мат=СоздатьОбъект("Математика"); Единиц=мат.bitand(арг,128)/128+мат.bitand(арг,64)/64+ мат.bitand(арг,32)/32+ мат.bitand(арг,16)/16+ мат.bitand(арг,8)/8+мат.bitand(арг,4)/4+мат.bitand(арг,2)/2+мат.bitand(арг,1);
#44
by vogenut
Ну, разные проблемы бывают. Приходится решать. В УПП вон системы линейных уравнений решают и ничего...
#46
by Ненавижу 1С
СЛУ еще понять можно и то я бы само решение вынес бы во внешнюю компоненту. Мне понятно зачем решать СЛУ в УПП, зачем битовые операции в учетных задачах - непонятно
#47
by СоболиныйГлаз
Тупо делить число на 128, остаток от деления на 64 и т.д. Результаты(целые, ес-но) сложить.
#48
by БТР
От одинэсники ушлые какие. В какой программе то? В бухгалтерии? На каком счету байты учитываете? Или к торговле партионный и складской учет байт налаживаешь?
#49
by vde69
например права хранятся в байте и при устаноке надо контролировать, что нельзя более 5 галок одновременно ставить... а вообще битовые операции в 1с - это нонсенс, так как в 1с НЕТУ битового типа, как и вообще числовового то-же нету (в нормальном понимании)
#56
by Raybek
Контроль четности чего? Числа с 0 до 255? Тогда, если последнее число 0 или четное - тогда число четное. Только вот опять для чего?:) Еще и сто миллионов раз будет проверяться четность? Колитесь короче:)
#59
by Raybek
Ааааа, какой-то алгоритм связанный с шифровкой-дешифровкой... криптографией занимаемся в 1С?:)
#61
by vde69
я где-то говорил про права 1с?????? я говорил просто про ПРАВА, которые могуб быть например переданы в ХП совершенно другой учетной системы (например интернет магазина). Я говорю, что ситуация возможна, но в рамках 1с абсурдна. зы всегда удивлялся как люди умеют искажать явно выраженое мнение...
#86
by Мутабор
1 - 1 бит в конце 2 - 2 бит разбивай число на составляющие.. >=128 - 8-й бит установлен число-128>=64 7-й бит установлен и т.д.
#91
by vde69
Самый быстрый будет вот этот вариант: ....... список имеет значения 128,64,32 .... Операции сравнения всегда работают быстрее арифметических
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Как проще всего посчитать количество строк в текстовом файле?
- v7: Не могу понять, как посчитать остатки на каждый день
- v7: Посчитать кол-во проводок за месяц
- Торговля 7. Количество по ПартииНаличие <> Количество по Остатки ТМЦ. Это нормально?
- посчитать количество булево(истина) в таблице
- Посчитать количество цифр в числе?
В этой группе 1С
- Запрет создания новой строки
- СКД: Группировка колонок в табличном документе.
- Вопрос по ведомости взаиморасчетов в УТ (10.3.8.9)
- ошибка инициализации объекта из компоненты
- РАУЗ Расчет себестоимсоти в УПП 1С 8.1
- КД 2.0 Не выгружается склад
- Посоветуйте программу для простого складского учета
- УПП. Платежка на выплату зарплаты. Деньги вернули. Новая платкежка.
- v8: СКД: Сериализация настроек по отдельности.
- Поиск элемента справочника методом НайтиПоРеквизиту()
- Есть ли смысл индексировать ресурс с типом "Характеристика.ИмяХарактеристики"
- Слетел начальный остаток товара на определённую дату.
- как программно очистить окно сообщений ?
- Где хранятся данные введенные в регламентированные отчеты
- Проблема с отчетом по продажам ТМЦ в ТиС 7.7 .... Помогите :(
- Эффект от внедрения 1С?
- Исключение счета из запроса.
- Как проверить есть ли интернет из 1С 8.1?
- Как обойти динамический список в цикле
- УПП списание НДС