На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: jack128, Rouse_, Krid
  
    > Работа с битами , Чтение, изменение, чтение по битовой маске
      Проверка - установлен ли определенный бит?
      ExpandedWrap disabled
        function IsBitSet(Value: cardinal; BitNum : byte): boolean;
        begin
          result:=((Value shr BitNum) and 1) = 1
        end;
        ...
        if IsBitSet(43691,1) then //установлен (равен 1)

      Автор ответа: Krid

      Установка бита в единицу
      ExpandedWrap disabled
        function BitOn(const val: longint; const TheBit: byte): LongInt;
        begin
          Result := val or (1 shl TheBit);
        end;


      Установка бита в ноль
      ExpandedWrap disabled
        function BitOff(const val: longint; const TheBit: byte): LongInt;
        begin
          Result := val and ((1 shl TheBit) xor $FFFFFFFF);
        end;


      Переключение состояния бита с единицы на ноль и наоборот
      ExpandedWrap disabled
        function BitToggle(const val: longint; const TheBit: byte): LongInt;
        begin
          Result := val xor (1 shl TheeBit);
        end;

      Автор ответа: Smike

      Пример чтения данных по битовой маске из значения:
      ExpandedWrap disabled
        procedure TForm1.Button1Click(Sender: TObject);
        const
          Col: Word = $ABCD;
        var
          R,
          G,
          B: Byte;
        begin
          R := Byte(Col shr 8) div 8; // первые 5 бит
          G := ((Byte(Col shr 8) and $7) * 8) or (Byte(Col) div $20); // Вторые 6 бит
          B := Byte(Col) and $1F; // третьи 5 бит
        end;

      Автор ответа: Rouse_
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0562 ]   [ 16 queries used ]   [ Generated: 27.04.24, 11:35 GMT ]