Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Управление битами [D6, Win95/98, Win2k]


kerkonst ©   (2002-08-27 12:14:00) 

Здраствуйте все ! Не подскажите ли следущее:

я точно помню, что в Delphi есть тип, представляющий собой что-то типа битовой структуры. Но в help-e его название найти не могу (руки, видать, того...). Вот оно собственно и ищется.

Прим: TBits не подходит. Там поля имеют тип Booleаn.


Alx2   (2002-08-27 13:22:00) [1]

:)


kerkonst   (2002-08-27 12:55:00) [2]

>Alx2
Сорри, переработал видимо... .В отпуск пора....


kerkonst   (2002-08-27 12:53:00) [3]

>Alx2
Пересечение - and
Объединение - or
- наверно, всетки наоборот


Alx2   (2002-08-27 12:47:00) [4]

>PVOzerski © (27.08.02 12:38)
Конечно, для серьезного дела - только регистровые операции :)
Но и работа со множествами в Delphi хорошо оптимизирована.
Собственно, множества в Delphi основаны на битовых операциях.
Пересечение - and
Объединение - or
Дополнение - not


Skier   (2002-08-27 12:43:00) [5]

>kerkonst
Кроме TBits для работы с битами (насколько я помню)
больше ничего нет...


kerkonst   (2002-08-27 12:41:00) [6]

>PVOzerski

Незнаю как остальные, я ничего придумывать и не собираюсь. Я хочу узнать название существующего типа.


PVOzerski   (2002-08-27 12:38:00) [7]

Ребята, Вы простите, но в данном случае набор доступных команд процессора от языка программирования не зависит. Pascal, С++, Fortran - всё это суть "надстройка" над машинным кодом, и ничего с бОльшими возможностями, чем Вам предоставляет процессор, Вы на самом деле не придумаете. Нет у Вас других средств работать с битами, чем те, что изложены выше. Вариант Alx2 © (27.08.02 12:29) мне нравится, но ведь на самом деле это тоже "оболочка" и, скажем, по скорости "откровенные" битовые операции он не превысит. Хотя по наглядности он хорош, IMHO.


kerkonst   (2002-08-27 12:35:00) [8]

>Skier

Согласен, так можно. Но вопрос-то не так стоял. Реализовать самостоятельно такой тип можно. И даже легко. Но я точно помню, что что-то такое уже есть. И просил напомнить его название


Alx2   (2002-08-27 12:29:00) [9]

Var
Value : integer
Bits : set of 0..31 absolute Value;
begin
Bits := []; // Все биты Value - нулевые
Bits := [0,1,3]; // 0-й, 1-й и 3-й бит Value - единицы.
end;
Только


Skier   (2002-08-27 12:28:00) [10]

>kerkonst
А я про что !?

BitIsOn(const AValue : Cardinal; const ABitNum : Byte) : Boolean;

AValue - чем тебе не "массив" из 32 битов ?
ABitNum - чем тебе не обращение к "массиву" из 32 битов по индексу ?


kerkonst   (2002-08-27 12:24:00) [11]

>Skier

Это не подходит. Необходимо
1) побитовый доступ (желательно, как в массиве, по индексу)
2) возможность обратится к структуре целиком для побитовых операций (shr,xor,..) без написания своей реализации для каждой операции


Ученик   (2002-08-27 12:21:00) [12]

Может Set of ... ?


Skier   (2002-08-27 12:20:00) [13]

>murza
Достаточно shl, or, and, not :)


murza   (2002-08-27 12:18:00) [14]

Вручную. Как у вас там, в дельфях-то? xor,or,not,shl,shr


Skier   (2002-08-27 12:17:00) [15]

>kerkonst
Могу предложить написать три функции
BitIsOn(...) - установлен ли бит
TurnBitOn(...) - установить бит
TurnBitOff(...) - сбросить бит


Наверх

Титульная страница Поиск, карта сайта Написать письмо