Главная страница
    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.005 c
1-26996
CrazyHackers
2002-08-29 15:43
2002.09.09
Поиск - Замена


4-27278
wman
2002-07-08 10:33
2002.09.09
Ограничение процессорного времени


1-27047
Seldon
2002-08-27 22:14
2002.09.09
Help!


1-27072
zavdim
2002-08-28 11:09
2002.09.09
THTMLViewer


14-27190
Uran
2002-08-14 11:25
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский