Показать сообщение отдельно
Старый 07.07.2004, 02:38     # 8
ARTi
Guest
 
Сообщения: n/a

Цитата:
везде BitNum понимать как порядковй номер бита и заменить его на (1 shl BitNum)
Imho только так. Бит - это бит, и работать с ним косвенно при помощи
Код:
procedure SetBit(SetWord, BitNum: Word);
begin
  SetWord:= SetWord or BitNum;     { Устанавливаем бит }
end;

procedure ClearBit(SetWord, BitNum: Word);
begin
  SetWord:= SetWord or BitNum;     { Устанавливаем бит }
  SetWord:= SetWord xor BitNum;    { Переключаем бит   }
end;

procedure ToggleBit(SetWord, BitNum: Word);
begin
  SetWord:= SetWord xor BitNum;    { Переключаем бит   }
end;

function GetBitStat(SetWord, BitNum: Word) : Boolean;
begin
  GetBitStat:= SetWord and BitNum = BitNum { Если бит установлен }
end;
очень некрасиво по той лишь простой причине, что у любого процессора есть встроенные средства для работы с битами и битовыми полями. Неиспользование этих средств, работа с битами при помощи структур, превращающихся в целые функции, - тогда как можно сделать это и одной специализированной командой процессора (естественно, так это будет выглядеть после компиляции), - богохульство , либо очень и очень исключительный случай (спецзадача).