Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.006 c
14-27193
Человечек
2002-08-14 13:06
2002.09.09
Нашествие голубых человечков


1-27099
Yaro
2002-08-24 23:00
2002.09.09
Run-Time Packages or ActiveX


1-27015
Коля
2002-08-30 08:46
2002.09.09
TRichEdit


14-27223
npAKtuk
2002-08-14 14:02
2002.09.09
Как поставить компонент Delphi5 на Delphi6?


3-26930
kinder
2002-08-20 15:51
2002.09.09
Ну обратите же внимание





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский