Установка определенного бита в словеDelphi , Синтаксис , Память и Указатели
Автор: Григорий Ситнин { **** UBPFD *********** by delphibase.endimus.com **** >> Возвращает AWord с установленным битом номер ABit (c 0 по 15) в значение 1, если AState = TRUE или 0, если AState = FALSE. Стоит заметить, что в функцию передается именно номер бита, а не маска. Проверка на правильный номер не производится. Зависимости: System Автор: Григорий Ситнин, gregor@gregor.ru, Москва Copyright: Григорий Ситнин, 2003 Дата: 8 июля 2003 г. ***************************************************** } function SetBit(AWord: word; ABit: byte; AState: boolean = true): word; begin if AState then Result := AWord or (1 shl ABit) else Result := AWord and (not (1 shl ABit)); end; Пример использования: {$APPTYPE CONSOLE} program test; uses Bits; // В модуле Bits описана функция SetBit var z: word; i: integer; s: string; begin z := 0; z := setbit(z, 0); // 0000000000000001 z := setbit(z, 2); // 0000000000000101 z := setbit(z, 9); // 0000001000000101 z := setbit(z, 14); // 0100001000000101 z := setbit(z, 15); // 1100001000000101 s := ''; for i := 15 downto 0 do s := s + inttostr(Ord(CheckBit(z, i))); writeln('value: ', z, ' dec = 1100001000000101'); writeln('result: ', s); z := $FFFF; z := setbit(z, 0, false); // 1111111111111110 z := setbit(z, 2, false); // 1111111111111010 z := setbit(z, 9, false); // 1111110111111010 z := setbit(z, 14, false); // 1011110111111010 z := setbit(z, 15, false); // 0011110111111010 s := ''; for i := 15 downto 0 do s := s + inttostr(Ord(CheckBit(z, i))); writeln('value: ', z, ' dec = 0011110111111010'); writeln('result: ', s); end. Программный пример на языке Delphi, демонстрирующий, как установить конкретный бит в слове. Функция Функция использует битовые операции для достижения этого. Если Пример программы демонстрирует использование этой функции для установки различных битов в слове и затем вывода получившейся двоичной представления слова. Он также показывает, как устанавливать несколько битов одним вызовом функции. Альтернативное реализация функции
Эта реализация использует тот факт, что в Delphi оператор Обратите внимание, что эта реализация предполагает, что
Эта реализация raisеs исключение диапазона ошибок, если Функция SetBit для установки определенного бита в слове с использованием операций shift и bitwise или/и. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Память и Указатели ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |