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