Форум: "Основная";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];
ВнизУправление битами Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c