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

Вниз

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

 
ShproTT ©   (2004-10-20 17:58) [0]

Всем добрый вечер!
Подскажите как работать с байтом информации по-битно?
В С++ можно работать с битовыми полями, а как в Delphi?


 
Romkin   (2004-10-20 18:22) [1]

and or not :))))


 
Rem ©   (2004-10-20 18:26) [2]

Romkin   (20.10.04 18:22) [1]
+ xor :))


 
XProger ©   (2004-10-20 22:58) [3]

shl shr 8)

1 2 4 8 16 32 64 128 256 ...
1 2 3 4 5  6  7  8   9   ...

Включить 8 бит:
b := b or 128;
Включён ли 8 бит:
b and 128 <> 0
Выключить 8 бит:
b := b and not 128;

А можно сделать shr 7 и работать с первым битом (128 -> 1) и в конце работы сдвинуть всё обратно shl 7
P.S.
В последнем могу допустить ошибку :)


 
Andy BitOff ©   (2004-10-20 23:02) [4]


XProger ©   (20.10.04 22:58) [3]
P.S.
В последнем могу допустить ошибку :)

Именно.


 
Piter ©   (2004-10-20 23:05) [5]

XProger ©   (20.10.04 22:58) [3]
А можно сделать shr 7 и работать с первым битом (128 -> 1) и в конце работы сдвинуть всё обратно shl 7


при сдвиге вправо все правые биты потеряются.


 
Piter ©   (2004-10-20 23:05) [6]

ну то есть, не все, а насколько сдвинул


 
Andy BitOff ©   (2004-10-20 23:07) [7]

Хотя я обратил внимание, что написано (128 -> 1). Если 128 сдвинуть, то восстановить можно.


 
Piter ©   (2004-10-20 23:09) [8]

Andy BitOff ©   (20.10.04 23:07) [7]
Если 128 сдвинуть, то восстановить можно


если знать, какое число сдвинул - то восстановить, конечно, можно :)


 
Добрый дядька   (2004-10-20 23:28) [9]

Например, так:

function isBit(const Value,NumBit: Byte): Boolean;
const
 ArrBits: array[0..7] of Byte=(1,2,4,8,16,32,64,128);
begin
 Result := ((ArrBits[NumBit] and Value)=ArrBits[NumBit]);
end;

function isBitMask(const Value,BitMask: Byte): Boolean;
begin
 Result := ((BitMask and Value)=BitMask);
end;

function SetBit(const Value,NumBit: Byte): Byte;
const
 ArrBits: array[0..7] of Byte=(1,2,4,8,16,32,64,128);
begin
 Result := (ArrBits[NumBit] or Value);
end;

function SetBitMask(const Value,BitMask: Byte): Byte;
begin
 Result := (BitMask or Value);
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.032 c
1-1098752183
Stivi
2004-10-26 04:56
2004.11.07
Columns в TListView


14-1097773193
Nikolay M.
2004-10-14 20:59
2004.11.07
Предпятничные задачки.


14-1098087893
Vlad Oshin
2004-10-18 12:24
2004.11.07
Outlook 2003 and Outlook 2002 do not access to attachmen


3-1097242611
Aser
2004-10-08 17:36
2004.11.07
Как для Table вызвать значение из другой таблицы, используя одно


14-1098293854
Murkt
2004-10-20 21:37
2004.11.07
What are movie theaters like in Russia?