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

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

Работа с битами.


Помогите! ©   (2007-09-03 15:20:00) 

Как у байта узнать конкретный бит, например 4, и как установить значение бита?


Anatoly Podgoretsky   (2007-09-03 16:41:00) [1]

> Помогите!  (03.09.2007 15:20:00)  [0]

Ко мне на сайт за статьей по работате с битами.


KJ13   (2007-09-03 15:33:00) [2]

Есть два способа:
Низкоуровневый подход обеспечивается логическими операциями :

var
 I : integer;
 N : integer;                       // Номер бита в диапазоне от 0..SizeOf(TYPE)*8 - 1
begin
 I := I or (1 shl N);               // установка бита
 I := I and not (1 shl N);          // сброс бита
 I := I xor (1 shl N);              // инверсия бита
 if (i and (1 shl N)) <> 0 then...  // проверка установленного бита
end;



Высокоуровневый подход опирается на представление числа в виде множества:

type
 TIntegerSet = set of 0..SizeOf(Integer)*8 - 1;
var
 I : Integer;
 N : Integer;
begin
 Include(TIntegerSet(I), N);     // установили N-ный бит в 1
 Exclude(TIntegerSet(I), N);     // сбросили N-ный бит в 0
 if N in TIntegerSet(I) then...  // проверили N-ный бит
end;


novill   (2007-09-03 15:28:00) [3]

см битовые функции and и or


Сергей М.   (2007-09-03 15:25:00) [4]


> Как у байта


Так же как у слова или двойного слова


Наверх

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