![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как прямо записать в структуру TMaps = set of TMap число? [D5, Win95/98, WinME, Win2k, WinXP]
Erik1 © (2004-08-18 17:08:00)Мне нехочется делать цикл и в нем перебирать биты. Мне нужно записать туда 4 младших бита. Дамаю, что можно взять адрес переменой и записать туда (value and $0F)? Я ненарушаю внутреней формат переменой?
Anatoly Podgoretsky (2004-08-18 20:10:00) [1]Код будет почти такой, только без лишнего Move
Почему бы не сравнить два сгенерированого кода.
А скорость важна там, где будут выполняться миллионы операций и выигрыш/проигрыш составит миллисекунды
Erik1 (2004-08-18 18:03:00) [2]To Anatoly Podgoretsky
Неуспел прочитать ваше сообщение, поэтому новый пост.
А что разбиеение числа на биты и организация по нему цикла быстрее чем просто Move?!!
Erik1 (2004-08-18 18:01:00) [3]Да писатель из меня неполучится. Вобщем я поэксперементировал мой подход вроде работает. А зачем нужно, просто есть готовая структура ее изменить нельзя в нее передается новый по смыслу параметр. Параметр просто число в базе, поэтому перебор битов бесмысленен для того чтобы снова получить число.
Почему биты спросите, потому что железо такое. Это вобще сначала через сеть передается а после в com порт уходит. Поэтому и структуру менять нельзя.
Anatoly Podgoretsky (2004-08-18 17:56:00) [4]Erik1 (18.08.04 17:44) [4]
Это очень медленный путь и к тому же не прозрачный.
Anatoly Podgoretsky (2004-08-18 17:50:00) [5]Тогда не плюс, а минус [4..7]
TUser (2004-08-18 17:50:00) [6]
> Может я неясно выразился
Это точно ...
> хочу записать набор битов
Есть известный алгоритм, как записать число в виде набора битов. Т.е. в 2ичной системе. Нужны div и mod, хотя за mod меня тут попинали недавно (конечно, shr лучше).
>Value := (Value and $0F);
>Move(Value, Map, SizeOf(Map));
Опиши поподробнее свою задачу. Не могу придумать, зачем такое может понадобиться.
Erik1 (2004-08-18 17:44:00) [7]Может я неясно выразился, но хочу записать набор битов. Тоесть у меня есть byte я обнуляю его старшие биты (value and $0F). Далее число надо записать в Map: TMaps;
Думаю так:
Value := (Value and $0F);
Move(Value, Map, SizeOf(Map));
P.S.
В Help я сам умею смотреть. Вроде я ждесь мелкаю иногда, наверно незапомнели. Конечно можно самому посмотреть, но я люблю спрашивать. Бывает чтото интересное узнаеш.
Anatoly Podgoretsky (2004-08-18 17:19:00) [8]+ [0..3]
Erik1 (2004-08-18 17:17:00) [9]Затормозил TMap = 0..7;
TUser (2004-08-18 17:16:00) [10]А что такое TMap? Если что-то типа byte, то таким образом ты ничего не нарушишь.