Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.09;
Скачать: CL | DM;

Вниз

Управление битами   Найти похожие ветки 

 
kerkonst ©   (2002-08-27 12:14) [0]

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

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

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


 
Skier ©   (2002-08-27 12:17) [1]

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



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

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


 
Skier ©   (2002-08-27 12:20) [3]

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


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

Может Set of ... ?


 
kerkonst ©   (2002-08-27 12:24) [5]

>Skier

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


 
Skier ©   (2002-08-27 12:28) [6]

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

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

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



 
Alx2 ©   (2002-08-27 12:29) [7]

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


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

>Skier

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


 
PVOzerski ©   (2002-08-27 12:38) [9]

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


 
kerkonst ©   (2002-08-27 12:41) [10]

>PVOzerski

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


 
Skier ©   (2002-08-27 12:43) [11]

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


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

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


 
kerkonst ©   (2002-08-27 12:53) [13]

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


 
kerkonst ©   (2002-08-27 12:55) [14]

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


 
Alx2 ©   (2002-08-27 13:22) [15]

:)



Страницы: 1 вся ветка

Текущий архив: 2002.09.09;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
1-27046
lexx80
2002-08-28 00:05
2002.09.09
Паморите с автозаполнением


1-27005
xyz
2002-08-29 22:07
2002.09.09
Хук но не глобальный, а на окошечко...


3-26876
RDA
2002-08-18 14:57
2002.09.09
Клиент-серверное програмирование. Вкусно - но...


1-27049
Nikola62
2002-08-27 13:29
2002.09.09
Как перечеркнуть линией TPanel


1-27106
Ig
2002-08-25 15:18
2002.09.09
Нужна такая прога